我在使用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. 爲什麼我的方法爲同一個變量返回不同的值
- 4. HashMap返回方法
- 5. $(...)。map()返回什麼?
- 6. 爲什麼我的方法不返回一個int?
- 7. scala.collection.mutable中的HashMap是不變的,但不可變.HashMap是協變的,爲什麼?
- 8. Arduino map()方法 - 爲什麼?
- 9. 編寫一個scala方法返回Nothing
- 10. 爲什麼下面的_.map函數什麼都不返回?
- 11. 如何評價爲什麼一個方法返回它返回什麼
- 12. 爲什麼document.getElementsBy__方法不返回一個HTMLCollection?
- 13. Scala HashMap containsValue方法
- 14. EJB方法返回一個不同的HashMap?
- 15. 爲什麼javascript map函數返回undefined?
- 16. HashMap get方法返回NullPointerException
- 17. 爲什麼scala的TreeSet返回SortedSet
- 18. 爲什麼react setState方法不可變?
- 19. 爲什麼GSC MutableListMultimap.get(K key)方法返回一個「view」而不是一個可變集合?
- 20. Scala不可變映射爲同一個鍵返回不同的值
- 21. 我將如何在Scala中產生一個不可變的.Map?
- 22. 爲什麼這個方法返回一個空字符串?
- 23. 爲什麼這個方法返回一個字符串?
- 24. 爲什麼可變返回無
- 25. 爲什麼我的方法返回None?
- 26. 爲什麼我的方法返回false?
- 27. 爲什麼我的.draggable方法返回一個錯誤?
- 28. 爲什麼我的swapCase方法只返回一個字符?
- 29. 爲什麼distanceFromLocation:方法返回一個荒謬的數字
- 30. 爲什麼我的ToString方法總是返回一個NullReferenceException?
Aaaaaah,我明白了。最後我得到了我的代碼工作!謝謝! – 2010-04-11 20:43:40
很高興我能幫到你。 – sblom 2010-04-11 20:44:01