Почему scala TreeSet возвращает SortedSet - PullRequest
7 голосов
/ 25 марта 2010

Есть ли причина, по которой метод объекта TreeSet.apply возвращает SortedSet, а не TreeSet?

Следующий код не будет компилироваться в Scala 2.7

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

Ответы [ 2 ]

5 голосов
/ 31 марта 2010

Это было определено как недоработка текущей библиотеки коллекций scala и решается в обновленной библиотеке коллекций, которая является частью scala 2.8. Смотрите http://www.scala -lang.org / sid / 3 # для подробностей.

5 голосов
/ 25 марта 2010

Буквальный ответ таков: apply() - это , реализованный в терминах ++, который определен в SortedSet, и, следовательно, возвращает SortedSet. ++ затем продолжает использовать +, который равен , определенный в TreeSet, так что вы можете привести его к TreeSet, если это критично (хотя я бы не рекомендовал его, так как зависит от реализации и может изменяться со временем!).

Что вам нужно от TreeSet, чего вы не можете получить от SortedSet?

Я не уверен, каково обоснование проектного решения, хотя похоже, что оно изменилось в 2.8.

...