scala - 为什么 immutable.Map 的值类型是协变的,而 mutable 的值类型不是

标签 scala

刚刚阅读了 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/

相关文章:

scala - 在Scala中正确使用Either、Try和Exceptions/ControlThrowable

scala - 如何从 Scala 的列表中获取任意属性的最大值?

multithreading - 了解scala中actor的线程性

scala - 如何测试在 Scala 中映射内部抛出的异常

Scala:从 Elasticsearch 获取超过 10000 个文档/消息

scala - Spark scala - 如何通过调节两行来进行 count()

scala - 为 scala-logging 设置日志级别

Java:写入 Scala 输出流

java - 根据特殊的非空格空白字符进行拆分

scala - 是否可以像在 Haskell 中一样在 Scala 中实现翻转?