0

やってみると

Some(1).flatMap(_ => List(2))

私は得る

 error: type mismatch;
 found   : List[Int]
 required: Option[?]

しかし、Some(1).map(_ => List(2)).flatten動作します。最初のケースでコンパイル エラーが発生するのはなぜですか?

4

3 に答える 3

5

リストに 0 個または 1 個の要素があることが確実な場合は、次のようにすることができます。

option.flatMap(_ => list.headOption)
于 2013-06-19T21:35:00.093 に答える
3

他のバージョンの 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か?

于 2013-06-19T14:41:48.387 に答える