val numbers = scala.collection.parallel.mutable.ParTrieMap(
(1 until 100) zip (1 until 100): _*
) map { case (k, v) => (k.toDouble, v.toDouble) }
对于上面的代码,我知道(1 until 100) zip (1 until 100)
会返回类似地图的内容,但_*
跟随它的含义是什么?
答案 0 :(得分:4)
Scala中的编程第8.8节重复的参数有一个简单的例子: _ *表示法告诉编译器将每个元素作为自己的参数传递给ParTrieMap
从第8.8节开始: val arr = Array(“What's”,“up”,“doc?”) 当你打电话
echo(arr: _*)
它会打印
What's
up
doc?
arr:_ *等同于类型声明,它告诉编译器将“arr”视为重复参数,例如:可变参数
此问题也很好地解释了post。
答案 1 :(得分:3)
通过在Range上调用zip方法,您将使用类型为IndexedSeq[(Int, Int)]
的IndexedSeq结构。要将(Int,Int)元组传递给ParTrieMap,您必须创建一个类型归属(您的: _*
注释),因为您无法将Seq传递给ParTrieMap(没有定义apply(seq: Seq[(A, B)])
签名的方法在ParTrieMap伴侣对象中,但有一个apply(a: (A, B)*)
方法)。基本上你从Seq中提取所有元组并将它们传递给Map。