这是一张香草scala地图:
scala> val m = Map( 'a'-> '1', 'b' -> 2)
m: scala.collection.immutable.Map[Char,AnyVal] = Map(a -> 1, b -> 2)
Map iterator()方法返回表示(键,值)的元组。因此,如果我们想要看到地图的价值,我们可以这样做:
scala> m.map( a => a._2)
res0: scala.collection.immutable.Iterable[AnyVal] = List(1, 2)
但是我们如何解构地图条目呢?以下不起作用:
scala> m.map( (a,b) => b)
<console>:10: error: wrong number of parameters; expected = 1
m.map( (a,b) => b)
^
答案 0 :(得分:5)
你应该使用模式匹配:
m.map{ case (a, b) => b}
地图条目只是Tuple2
。
答案 1 :(得分:3)
以防您不想编写case {...}
语法:
scala> import Function.{ tupled => $ }
import Function.{tupled=>$}
scala> Map(1 -> "a") map $((a,b) => b)
res1: scala.collection.immutable.Iterable[String] = List(a)
scala> Map(1 -> "a") map $((a,b) => a -> s"$b!")
res2: scala.collection.immutable.Map[Int,String] = Map(1 -> a!)