オプションのマップを折りたたむための省略形があるかどうか疑問に思っています。例えば
def divideByThree(x:Int) = if (x == 0) None else Some(x/3)
val result = Some(6) map (divideByThree(_))
resut:Option[Option[Int]] = Some(Some(2))
これを修正するために私は
val result = Some(6) match {
case Some(i) => divideByThree(i)
case None => None
}
これは少し重いようです。これに対処するために Option と言う mapOption に暗黙的な関数を作成することもできますが、私が考えていなかったより良い方法があるかどうか疑問に思っています。