刚刚阅读了 Scala 集合实现并注意到了细微的差别:
- 不可变 HashMap :
类 HashMap[A, +B]()
- 可变 HashMap :
class HashMap[A, B]()
你能解释一下为什么不可变的值类型是协变的而可变的不是吗?
感谢您的帮助
最佳答案
如果可变映射是协变的,则可以执行以下操作:
val m1: mutable.Map[String, Int] = mutable.Map.empty[String, Int]
val m2: mutable.Map[String, Any] = m1
m2 += ("foo" -> "bar")
m1("foo") // returns "bar" out of a Map[String, Int]???
关于scala - 为什么 immutable.Map 的值类型是协变的,而 mutable 的值类型不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413236/