为什么scala的TreeSet返回SortedSet

Ela*_*ich 7 scala treeset

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

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

val t:TreeSet[Int] = TreeSet(1,2,3)
Run Code Online (Sandbox Code Playgroud)

Kri*_*ala 5

字面答案是因为apply()实现 在以下方面++被定义,SortedSet,并因此返回SortedSet.++然后继续使用+,这定义的TreeSet,所以TreeSet如果它是关键的,你可以把它强制转换(虽然我不推荐它,因为它是依赖于实现的,可能会随着时间的推移而改变!).

TreeSet中你需要从SortedSet获得什么?

我不确定设计决策背后的理由是什么,虽然看起来它在2.8中有所改变.


小智 5

这已经被认为是当前scala集合库的一个短暂的来源,并且在作为scala 2.8的一部分的改进的集合库中得到了解决.有关血淋淋的细节,请参见http://www.scala-lang.org/sid/3#.