为什么scala的TreeSet返回SortedSet

时间:2010-03-25 05:01:41

标签: scala treeset

对象TreeSet.apply方法是否有理由返回SortedSet而不是TreeSet

以下代码无法在scala 2.7中编译

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

2 个答案:

答案 0 :(得分:5)

字面答案是因为apply()++来说是implementedSortedSetSortedSet中定义,因此返回+++然后继续使用TreeSetTreeSet中定义了 ,因此如果它很关键,您可以将其强制转换回{{1}}(尽管我不推荐它,因为它依赖于实现,可能会随着时间而改变!)。

您从TreeSet中无法从SortedSet获得什么?

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

答案 1 :(得分:5)

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