【发布时间】:2010-09-02 12:18:52
【问题描述】:
考虑这段代码:
Welcome to Scala version 2.8.0.r0-b20100714201327 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_20).
scala> val a = IntMap((1,1))
a: scala.collection.immutable.IntMap[Int] = IntMap((1,1))
scala> a.map(x => (x._1,x._2 + 1))
res23: scala.collection.immutable.Map[Int,Int] = Map((1,2))
IntMap.map 的标题说这个
def map [B] (f: ((Int, T)) ⇒ B) : immutable.IntMap[B]
[用例] 通过对所有元素应用函数来构建新集合
这个不可变整数映射。
我应该如何构造 lambda 以返回 IntMap?
【问题讨论】:
-
这是(已修复的)错误:lampsvn.epfl.ch/trac/scala/ticket/3603
-
旁注:您可以使用
a mapValues { _ + 1 },尽管它与 IntMap 表现出相同的错误行为。 -
这个错误似乎在主干中已修复,但在 2.8.0.final 中没有。为了更正我之前的评论,
mapValues会出现这种行为,因为它返回的是地图视图而不是新地图。见scala-programming-language.1934581.n4.nabble.com/…
标签: collections scala map lambda immutability