首先,让我提前道歉,因为我在堆栈溢出时发布的第一个问题是什么,可能是一个非常愚蠢的问题.
由于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的对象?它们应该由开发人员使用还是仅由语言和/或编译器在内部使用?它们是否与我上面提到的地图实例化方案有某种关系?
在此先感谢您的帮助.
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)
| 归档时间: |
|
| 查看次数: |
1328 次 |
| 最近记录: |