对象TreeSet.apply
方法是否有理由返回SortedSet
而不是TreeSet
?
以下代码无法在scala 2.7中编译
val t:TreeSet[Int] = TreeSet(1,2,3)
答案 0 :(得分:5)
字面答案是因为apply()
就++
来说是implemented,SortedSet
在SortedSet
中定义,因此返回++
。 +
然后继续使用TreeSet
,TreeSet
中定义了 ,因此如果它很关键,您可以将其强制转换回{{1}}(尽管我不推荐它,因为它依赖于实现,可能会随着时间而改变!)。
您从TreeSet中无法从SortedSet获得什么?
我不确定设计决策背后的理由是什么,虽然它看起来在2.8中有所改变。
答案 1 :(得分:5)
这已被确定为当前scala集合库的简称,并在作为scala 2.8的一部分的改进集合库中得到解决。有关血腥的详细信息,请参阅http://www.scala-lang.org/sid/3#。