2
作爲一種最佳實踐,集合類型不應多於一個實例。例如,Nil是scala庫中的一個case對象。TreeMap和TreeSet都創建一個新的空化身TreeMap.empty,TreeSet.empty。這是可以修復的嗎?
但是,TreeMap和TreeSet都會在每次調用empty()時創建一個新實例。在玩了一段時間之後,很明顯問題在於排序不是協變的。有沒有解決方法?
作爲一種最佳實踐,集合類型不應多於一個實例。例如,Nil是scala庫中的一個case對象。TreeMap和TreeSet都創建一個新的空化身TreeMap.empty,TreeSet.empty。這是可以修復的嗎?
但是,TreeMap和TreeSet都會在每次調用empty()時創建一個新實例。在玩了一段時間之後,很明顯問題在於排序不是協變的。有沒有解決方法?
這不是唯一的問題。另一個問題是TreeMap[A]
和TreeSet[A]
都需要一個隱含的Ordering[A]
參數來插入和刪除值。
正如你可以在scala.collection.immutable.Set
來源看,你可以簡單地,否則投了Set[Any]
到Set[A]
如果是空的,因爲類型參數在運行時反正擦除。
是的,但有以下可能嗎?一個Ordering [Nothing]是平凡的定義,我們可以讓插入的第一個元素帶來它的順序。 – user44242 2011-04-06 06:39:11