开发者

Why scala's TreeSet returns SortedSet

Is there a reason that the object TreeSet.apply method returns SortedSet and not TreeSet?

The following code won't compile in scala 2.7

val t:TreeSet[Int]开发者_如何学JAVA = TreeSet(1,2,3)


The literal answer is because apply() is implemented in terms of ++, which is defined in SortedSet, and hence returns a SortedSet. ++ then goes on to use +, which is defined in TreeSet, so you can cast it back to TreeSet if it's critical (though I wouldn't recommend it, as it is implementation dependent and may change over time!).

What do you need from TreeSet that you can't get from SortedSet?

I'm not sure what the rationale behind the design decision is, though it looks like it has changed in 2.8.


This has been identified as a short coming of the current scala collection library, and is addressed in the revamped collection library that is part of scala 2.8. See http://www.scala-lang.org/sid/3# for the gory details.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜