在Map对象上应用方法?

Jer*_*ERT 4 scala map

首先,让我提前道歉,因为我在堆栈溢出时发布的第一个问题是什么,可能是一个非常愚蠢的问题.

由于scala中的Map使用以下语法进行实例化:

val myMap=Map(1->”value1”,2->”value2”)
Run Code Online (Sandbox Code Playgroud)

我期待Map对象scala.collection.immutable提供一个apply带有大致类似的签名的方法:

def apply[A,B](entries :(A,B)*):Map[A,B]
Run Code Online (Sandbox Code Playgroud)

显然我应该是盲人,但我找不到这样的方法.它在哪里定义?

此外,也有人给我约的用途信息Map1,Map2,Map3,Map4在定义的类Map的对象?它们应该由开发人员使用还是仅由语言和/或编译器在内部使用?它们是否与我上面提到的地图实例化方案有某种关系?

在此先感谢您的帮助.

Deb*_*ski 6

apply看起来像是在scala.collection.generic.GenMapFactory一个超类上定义的scala.collection.immutable.Map.出于某种原因,Scaladoc只是忽略了2.9.2的这种方法.(正如Rogach所说,它存在于2.9.1中.)

Map1...... Map4(与EmptyMap私人一起)只是简单的优化.这些是在Map.scala中定义的,实际上最多只能容纳四个键和值,而无需任何进一步的间接.如果尝试添加到a Map4,HashMap将自动创建a.

您通常不需要Map[1-4]手动创建:

scala> Map('a -> 1)
res0: scala.collection.immutable.Map[Symbol,Int] = Map('a -> 1)

scala> res0.isInstanceOf[scala.collection.immutable.Map.Map1[_,_]]
res1: Boolean = true
Run Code Online (Sandbox Code Playgroud)