在Scala中,如何在Map的二进制操作中将元组值分配给变量?

时间:2012-10-16 23:29:41

标签: scala map tuples

  

可能重复:
  Tuple Unpacking in Map Operations

假设我有以下Map [Int,Double]:

scala> map
res19: scala.collection.immutable.Map[Int,Double] = Map(1 -> 1.1, 2 -> 2.2)

我可以在其上运行以下foldLeft:

scala> map.foldLeft("A")((initVal,x:(Int,Double)) => initVal + x._1)
res20: java.lang.String = A12

但是我找不到将元组的值赋给命名变量的方法:

scala> map.foldLeft("A")((init,x:(a:Int,b:Double)) => init + x.a)
<console>:1: error: ')' expected but ':' found.
   map.foldLeft("A")((init,x:(a:Int,b:Double)) => init + x.a)
                               ^

甚至可以这样做吗?

1 个答案:

答案 0 :(得分:7)

您可以使用案例

map.foldLeft("A") {case (init, (a,b)) => init + a}