7

TreeSet.apply对象方法返回SortedSet而不是返回是否有原因TreeSet

以下代码不会在 scala 2.7 中编译

val t:TreeSet[Int] = TreeSet(1,2,3)
4

2 回答 2

5

字面上的答案是因为apply()是根据 来实现++,它在 中定义SortedSet,因此返回 a SortedSet++然后继续使用定义在 中的+,因此如果它TreeSet关键,您可以将其转换回TreeSet(尽管我不推荐它,因为它依赖于实现并且可能会随着时间而改变!)。

从 TreeSet 中你需要什么是从 SortedSet 中得不到的?

我不确定设计决策背后的基本原理是什么,尽管它看起来在 2.8 中发生了变化。

于 2010-03-25T06:00:40.957 回答
5

这已被确定为当前 scala 集合库的一个缺点,并在作为 scala 2.8 一部分的改进的集合库中得到解决。有关血腥细节,请参见http://www.scala-lang.org/sid/3#

于 2010-03-31T05:32:07.090 回答