在Map对象上应用方法?

时间:2012-04-19 09:08:02

标签: scala map

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

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

val myMap=Map(1->”value1”,2->”value2”)

我期待scala.collection.immutable的Map对象提供一个apply方法,其签名大致如下:

def apply[A,B](entries :(A,B)*):Map[A,B]
显然我应该是盲人,但我找不到这样的方法。在哪里定义?

此外,有人可以向我提供有关Map1对象中定义的Map2Map3Map4Map类的用途的信息吗?它们应该由开发人员使用还是仅由语言和/或编译器在内部使用?它们是否与我上面提到的地图实例化方案有关?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

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

Map4 ... EmptyMap(与Map4一起使用,这是私有的)只是优化。这些是在Map.scala内定义的,实际上最多只能容纳四个键和值而无需任何进一步的间接。如果尝试添加到HashMap,则会自动创建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

{{1}}