gpt4 book ai didi

scala collection.Map 不能添加到

转载 作者:行者123 更新时间:2023-12-02 15:42:56 25 4
gpt4 key购买 nike

为什么我不能添加到 scala.collection.Map?如果没有此功能,此 trait 似乎毫无用处。

难道他们不能覆盖 Iterable 中的 ++ 方法并将返回类型减少为 Map 吗?

附言我并不是说它应该是可变的,只是说它应该能够返回一个新的 Map 添加了映射(或多个映射),与 immutable.Map.

最佳答案

我将在下面保留原始答案,尽管它几乎不正确,因为我没有正确理解问题。

Scala 目前的集合库几乎对可变/不可变强制执行不同的添加方法,可能是希望在源代码中明确使用的是什么类型的集合。如前所述,这将在 2.8 中进行修订,并且该前提将消失。

既然如此,抽象类并没有提供你所想的方法,因为它们可能存在于不可变的而不是可变的,反之亦然。或者它们可能具有相同的名称,但实现不同。

因此,不可能在基类中提供它们。

但是,此外,请注意,通过这种方式,如果您收到一个 scala.collection.map,您不能在收到不可变对象(immutable对象)时通过将其视为可变对象来搞砸它,反之亦然。

现在,对于错误的答案。 :)

你可以(不,你不能——下面的代码使用 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)

关于scala collection.Map 不能添加到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/949419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com