为什么scala 2.11中有3种贴图类型

为什么scala 2.11中有3种贴图类型,scala,Scala,我在scala中看到了3种贴图类型: scala.collection.Map scala.collection.immutable.Map scala.collection.mutable.Map immutability vs mutability非常有意义,predef似乎有一个映射别名直接指向immutable.Map。我不明白为什么会有scala.collections.Map 此外,它看起来像JavaConversions.mapAsJavaMap只接受scala.collecti

我在scala中看到了3种贴图类型:

scala.collection.Map
scala.collection.immutable.Map
scala.collection.mutable.Map
immutability vs mutability非常有意义,predef似乎有一个映射别名直接指向immutable.Map。我不明白为什么会有scala.collections.Map

此外,它看起来像JavaConversions.mapAsJavaMap只接受scala.collections.Map而不是不可变的?

两者:

scala.collections.immutable.Map
scala.collections.mutable.Map
实现/扩展特性:

scala.collections.Map
您可以将其视为地图的通用界面。

两者:

scala.collections.immutable.Map
scala.collections.mutable.Map
实现/扩展特性:

scala.collections.Map

您可以将其视为地图的通用接口。

如果您查看和的文档,您将看到它们都扩展了trait,它包含地图的通用操作,而不管具体实现如何。然而,这仅仅是一种特质,所以你无法启动它


因此,.mapAsJavaMap方法同时接受映射的不可变和可变变体。

如果您查看和的文档,您将看到它们都扩展了trait,它包含映射的常见操作,而不管具体实现如何。然而,这仅仅是一种特质,所以你无法启动它

因此,.mapAsJavaMap方法同时接受映射的不可变和可变变体。

前面提到的scala文档

A collection in package scala.collection.immutable is guaranteed to be immutable for everyone.
...
A collection in package scala.collection.mutable is known to have some operations that change the collection in place.
...
A collection in package scala.collection can be either mutable or immutable. 
scala.collections.Map
中的
Map
与java中一样,只是一个特性或接口。它为不可变映射和可变映射提供了通用API。没有指定,scala默认为不可变的实现

编辑

In addition it looks like JavaConversions.mapAsJavaMap only accepts a scala.collections.Map and not the immutable one?
不是真的。由于
immutable.Map
mutable.Map
都实现了trait
Map
,因此
mapAsJavaMap
实际上并不关心
Map
的具体实现

这就是所谓的。正如wiki页面所示,一个期望鸟的方法并不关心鸟的实例是一只鸭子、一只鸵鸟还是一只布谷鸟

A collection in package scala.collection.immutable is guaranteed to be immutable for everyone.
...
A collection in package scala.collection.mutable is known to have some operations that change the collection in place.
...
A collection in package scala.collection can be either mutable or immutable. 
scala.collections.Map
中的
Map
与java中一样,只是一个特性或接口。它为不可变映射和可变映射提供了通用API。没有指定,scala默认为不可变的实现

编辑

In addition it looks like JavaConversions.mapAsJavaMap only accepts a scala.collections.Map and not the immutable one?
不是真的。由于
immutable.Map
mutable.Map
都实现了trait
Map
,因此
mapAsJavaMap
实际上并不关心
Map
的具体实现


这就是所谓的。如维基页面所示,一个期望鸟的方法并不关心鸟的实例是鸭子、鸵鸟还是布谷鸟,你有没有注意到可变和不变的一个都扩展了scala.collections.Map?对不起,我现在犯了一个非常粗心的错误,我不明白为什么IntelliJ语法highlighter一直将其标记为错误。通过重建解决您注意到可变和不可变的一个扩展了scala.collections.Map吗?我现在知道了,对不起,只是我犯了一个非常粗心的错误,我不明白IntelliJ语法highlighter为什么一直把它标错。通过重建解决看起来IntelliJ和sbt中有一些奇怪的工件一开始不会接受它。现在就做,谢谢!是的,看起来IntelliJ和sbt中有一些奇怪的人工制品一开始是不会接受的。现在就做,谢谢!