首先让我提前道歉,因为我在堆栈溢出时发布的第一个问题是什么,可能是一个非常愚蠢的问题。
由于使用以下语法实例化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
对象中定义的Map2
,Map3
,Map4
,Map
类的用途的信息吗?它们应该由开发人员使用还是仅由语言和/或编译器在内部使用?它们是否与我上面提到的地图实例化方案有关?
提前感谢您的帮助。
答案 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}}