我在使用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