11

このコードでコンパイル エラーが発生するのはなぜですか

型の不一致; 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))
4

1 に答える 1

11

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)
于 2013-01-26T17:51:01.050 に答える