这对我来说似乎不合逻辑:
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)
?只有一个类型为Tuple2[Int, String]
or的参数Pair of Int, String
。a.map((key, value) => value)
和有什么区别a.map(x => x._2)
?
更新:
val myTuple2 = (1, 2)
-- 这是一个变量,对吗?
for ( (k, v) <- a ) yield v
--(k, v)
也只有一个变量,对吗?
map((key, value) => value)
-- 2 个变量。奇怪的。
那么如何在不使用的情况下指定类型Tuple2
(或任何其他类型)的变量?map
case
更新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)
- 行