oxb*_*kes 1 scala map scala-collections
为什么我不能加入scala.collection.Map?如果trait没有这个功能,这似乎毫无用处.
难道他们不能覆盖++方法Iterable并将返回类型减少为Map?
PS我并不是说它应该是可变的,只是它应该能够返回一个Map带有添加映射(或映射)的新函数,就像它一样immutable.Map.
我将在下面留下原始答案,虽然这是非常不正确的,因为我没有正确理解这个问题.
Scala现在的集合库几乎强制执行可变/不可变的不同添加方法,可能希望在源代码中明确使用什么类型的集合.如上所述,这是在2.8修改,这个前提正在消失.
在这种情况下,抽象类不提供您正在考虑的方法,因为它们可能存在于不可变但不是可变的,反之亦然.或者它们可能具有相同的名称,但实现方式不同.
因此,在基类中提供它们是不可能的.
但是,请注意,这样一来,如果你收到一个scala.collection.map,你就不能把它搞砸了,当你收到一个不可变的时候把它当作可变的,反之亦然.
而且,现在,对于错误的答案.:)
你可以(不,你不能 - 下面的代码使用scala.collection.imutable.Map).
scala> val x = Map(1 -> 'a', 2 -> 'b')
x: scala.collection.immutable.Map[Int,Char] = Map(1 -> a, 2 -> b)
scala> x ++ Map(3 -> 'c')
res5: scala.collection.immutable.Map[Int,Char] = Map(1 -> a, 2 -> b, 3 -> c)
scala> var y = x
y: scala.collection.immutable.Map[Int,Char] = Map(1 -> a, 2 -> b)
scala> y += (3 -> 'c')
scala> y
res7: scala.collection.immutable.Map[Int,Char] = Map(1 -> a, 2 -> b, 3 -> c)
scala> x + (3 -> 'c')
res8: scala.collection.immutable.Map[Int,Char] = Map(1 -> a, 2 -> b, 3 -> c)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3559 次 |
| 最近记录: |