我在使用scala.collection.immutable.HashMap.I的更新方法時遇到問題,但沒有看到它返回Map而不是HashMap的原因。我如何通過添加新的鍵值對來獲得新的HashMap?爲什麼Scala不可變的HashMap方法返回一個Map?
4
A
回答
7
這是預期的行爲。 HashMap
作爲Map
的具體實施方式是最有用的,涉及使用散列表進行查找。
通常情況下,你會說var values: Map[String, Any] = new HashMap
,然後坐下來使用它,就好像它是普通的ol'immutable Map
。
你有沒有理由讓你的代碼知道它是一個HashMap後,你已經new
'如上所述?
7
如果你使用2.7,這是因爲隨着時間的推移,集合庫已經變得與各種實現類不一致,而不是專門化某些方法的返回類型。這是2.8版集合庫重新設計中修復的問題之一。
如果您使用2.8,這是因爲update
方法已被棄用,您應該使用updated
來代替。這正確地專門化了返回值。
scala> HashMap(1->1, 2->2, 3->3, 4->4).updated(1,3)
res4: scala.collection.immutable.HashMap[Int,Int] = Map((2,2), (4,4), (1,3), (3,3))
2
在2.7.x,它返回一個Map
,因爲它可能是一個ListMap
或TreeMap
或什麼的,它被認爲是太多的工作,每次重新定義方法。
在2.8.x中,它應該返回一個HashMap
- 但您必須使用updated
(update
已被棄用)。
相關問題
- 1. 哪個Scala方法返回null而不是Option,爲什麼?
- 2. 爲什麼Map在默認情況下在Scala中不可變?
- 3. HashMap返回方法
- 4. 爲什麼我的方法不返回一個int?
- 5. scala.collection.mutable中的HashMap是不變的,但不可變.HashMap是協變的,爲什麼?
- 6. 編寫一個scala方法返回Nothing
- 7. 如何評價爲什麼一個方法返回它返回什麼
- 8. 爲什麼scala的TreeSet返回SortedSet
- 9. 爲什麼react setState方法不可變?
- 10. 爲什麼GSC MutableListMultimap.get(K key)方法返回一個「view」而不是一個可變集合?
- 11. 我將如何在Scala中產生一個不可變的.Map?
- 12. 爲什麼這個方法返回一個空字符串?
- 13. 爲什麼這個方法返回一個字符串?
- 14. 爲什麼可變返回無
- 15. 爲什麼我的方法返回false?
- 16. 爲什麼distanceFromLocation:方法返回一個荒謬的數字
- 17. 爲什麼我的ToString方法總是返回一個NullReferenceException?
- 18. 爲什麼Scala查詢返回單位?
- 19. 爲什麼不使用apply方法可以創建Map對象?
- 20. 爲什麼scala方法在函數不可串行的時候?
- 21. 爲什麼Apollo/GraphQL返回一個不可擴展的對象?
- 22. 爲什麼方法「組合」在Scala中返回Iterator而不是Stream?
- 23. 在JavaScript和knockout.js中,爲什麼我不能返回一個變量?爲什麼我必須返回變量,就像它是一種方法?
- 24. 什麼時候Scala中的方法需要返回類型?
- 25. 爲什麼一個方法需要返回值?
- 26. 爲什麼webdriveio getText方法返回一個數組?
- 27. 爲什麼Message.getFrom()方法返回一個Array?
- 28. 爲什麼Find()方法返回一個數組?
- 29. 爲什麼GetRows()方法返回一個轉置數組?
- 30. 爲什麼'system`不會創建並返回一個變量?
Aaaaaah,我明白了。最後我得到了我的代碼工作!謝謝! – 2010-04-11 20:43:40
很高興我能幫到你。 – sblom 2010-04-11 20:44:01