如果我在Scala中有以下代码:
val prices = Map("bread" -> 4.56, "eggs" -> 2.98, "butter" -> 4.35)
prices.map((k,v) => (k, v-1.1)).toMap我知道错误:
The expected type requires a one-argument function accepting a 2-Tuple.
Consider a pattern matching anonymous function, `{ case (k, v) => ... }`但当我将第二行改为:
prices.map{ case(k,v) => (k, v - 1.1) }.toMap上面的错误消失了?请有人解释一下,我什么时候需要在地图函数中使用用例?
发布于 2016-06-16 21:10:31
正如@chrisaycock的评论中提到的,在普通地图中没有自动解压缩。你需要像这样使用它:
scala> val prices = Map("bread" -> 4.56, "eggs" -> 2.98, "butter" -> 4.35)
prices: scala.collection.immutable.Map[String,Double] = Map(bread -> 4.56, eggs -> 2.98, butter -> 4.35)
scala> prices.map(kv => (kv._1, kv._2-1.1)).toMap
res0: scala.collection.immutable.Map[String,Double] = Map(bread -> 3.4599999999999995, eggs -> 1.88, butter -> 3.2499999999999996)https://stackoverflow.com/questions/37868804
复制相似问题