Есть ли причина что объект TreeSet.apply
возвраты метода SortedSet
и нет TreeSet
?
Следующий код не скомпилирует в scala 2.7
val t:TreeSet[Int] = TreeSet(1,2,3)
Буквальный ответ заключается в том, что apply ()
реализован в терминах ++
, который определен в SortedSet
, и, следовательно, возвращает a SortedSet
. ++
затем переходит к использованию +
, который равен определен в TreeSet
, поэтому вы можете вернуть его в TreeSet
, если это критично (хотя я бы не рекомендовал это, поскольку это зависит от реализации и со временем может измениться!).
Что вам нужно от TreeSet, чего нельзя получить от SortedSet?
Я не уверен, в чем причина такого дизайнерского решения, хотя похоже, что оно изменилось в версии 2.8.
Это было определено как недостаток текущей библиотеки коллекций scala и устранено в обновленной библиотеке коллекций, которая является частью scala 2.8. См. http://www.scala-lang.org/sid/3# для получения более подробной информации.