やってみると
Some(1).flatMap(_ => List(2))
私は得る
error: type mismatch;
found : List[Int]
required: Option[?]
しかし、Some(1).map(_ => List(2)).flatten
動作します。最初のケースでコンパイル エラーが発生するのはなぜですか?
やってみると
Some(1).flatMap(_ => List(2))
私は得る
error: type mismatch;
found : List[Int]
required: Option[?]
しかし、Some(1).map(_ => List(2)).flatten
動作します。最初のケースでコンパイル エラーが発生するのはなぜですか?
リストに 0 個または 1 個の要素があることが確実な場合は、次のようにすることができます。
option.flatMap(_ => list.headOption)
他のバージョンの Scala では動作しないとは言いませんが、私にとっては動作しません:
scala> Some(1).map(_ => List(2)).flatten
<console>:8: error: Cannot prove that List[Int] <:< Option[B].
Some(1).map(_ => List(2)).flatten
^
さらに重要なことは、 の結果Some("abc").flatMap(s => s.toList)
、またはそれに相当するものは何でしょうSome(List('a','b','c')).flatten
か?