kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

初学者向けの Scala Tips (1) - Option#map()を使おう

唐突に始まったScala Tipsコーナー、初学者が陥りがちなScalaのコードパターンを例にして、より良い方法を解説していきます。第一回はOptionクラスのmap()メソッドを使おうというものです。知ってる人には今更ですが、Option#map(f)は、レシーバーの値がSome(v)の場合は、fvを渡した結果のSome(f(v))が、Noneの場合はNoneが返ります。したがって、パターンマッチを使った以下のようなコードは

val result = exp1 match {
  case Some(v1) =>
    val vx = //expression using v1
    Some(vx)
  case None =>
    None
}

常に以下のような形に書き換えることができます。

val result = exp1.map{v1 =>
  val vx = //expression using v1
  vx
}

より一般的なコードでは、flatMap()を使う事が有用な事がありますが、それはまた今度。