0

これは私にとって論理的ではないようです:

scala> val a = Map((1, "111"), (2, "222"))
a: scala.collection.immutable.Map[Int,String] = Map(1 -> 111, 2 -> 222)

scala> val b = a.map((key, value) => value)
<console>:8: error: wrong number of parameters; expected = 1
       val b = a.map((key, value) => value)
                                  ^
scala> val c = a.map(x => x._2)
c: scala.collection.immutable.Iterable[String] = List(111, 222)

言えることはわかってるval d = a.map({ case(key, value) => value })

しかし、なぜそれが言えないの a.map((key, value) => value)ですか?or型の引数は1 つだけです。とはどう違いますか?Tuple2[Int, String]Pair of Int, Stringa.map((key, value) => value)a.map(x => x._2)

更新

val myTuple2 = (1, 2)-- これは 1 つの変数ですよね?

for ( (k, v) <- a ) yield v--(k, v)変数も 1 つだけですよね?

map((key, value) => value)-- 2 つの変数。変。

では、を使用せずに型Tuple2(またはその他の型)の変数を指定するにはどうすればよいでしょうか?mapcase

更新 2:

それの何がいけないの?

Map((1, "111"), (2, "222")).map( ((x,y):Tuple2[Int, String]) => y)- 違う

Map((1, "111"), (2, "222")).map( ((x):Tuple2[Int, String]) => x._2)- わかった

4

3 に答える 3

-2

パターン マッチング (または部分関数、この場合は同じ) を使用できます。角かっこに注意してください。

val b = a.map{ case (key, value) => value }
于 2013-07-01T15:03:34.360 に答える