このコードでコンパイル エラーが発生するのはなぜですか
型の不一致; found : (Int, Char) 必須: scala.collection.GenTraversableOnce[?]
?
val n = Map(1 -> 'a', 4 -> 'a')
def f(i: Int, c: Char) = (i -> c)
n.flatMap (e => f(e._1, e._2))
このコードでコンパイル エラーが発生するのはなぜですか
型の不一致; found : (Int, Char) 必須: scala.collection.GenTraversableOnce[?]
?
val n = Map(1 -> 'a', 4 -> 'a')
def f(i: Int, c: Char) = (i -> c)
n.flatMap (e => f(e._1, e._2))
map()
代わりに使用してください:
n.map (e => f(e._1, e._2))
flatMap()
単一の要素ではなく、値のコレクションを返すことを前提としています。したがって、これらは機能します:
n.flatMap (e => List(f(e._1, e._2))
n.flatMap (e => List(f(e._1, e._2), f(e._1 * 10, e._2)))
2 番目の例は興味深いものです。[キー、値] のペアごとに 2 つのペアを返し、それらをマージして結果を次のようにします。
Map(1 -> a, 10 -> a, 4 -> a, 40 -> a)