Collections IntMap在映射后更改类型
考虑这段代码:Collections IntMap在映射后更改类型,collections,scala,map,lambda,immutability,Collections,Scala,Map,Lambda,Immutability,考虑这段代码: 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.colle
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]
def映射[B](f:((Int,T))⇒ B) :不可变。IntMap[B]
[用例]通过将函数应用于所有元素来构建新集合
这是一个不可变的整数映射。
我应该如何构造lambda来返回IntMap?在Scala 2.8下,我得到
scala> a.map(x => (x._1,x._2 + 1))
res0: scala.collection.immutable.IntMap[Int] = IntMap((1,2))
下面是(修复的)bug:Side comment:您可以使用mapValues{{u+1}
,尽管它与IntMap表现出相同的bug行为。这个bug似乎在trunk中修复了,但在2.8.0.final中没有。为了纠正我之前的评论,这种行为应该出现在mapValues
中,因为它返回的是地图视图而不是新地图。看见