语法糖:_ *用于将Seq作为方法参数
我只是注意到这个构造在Web上的某个地方:
val list = List(someCollection: _*)
_*
是什么意思? 这是一个方法调用的语法糖吗? 我的自定义类应该满足什么约束,以便它可以利用这个语法糖?
一般来说, :
表示法用于types归属,强制编译器将某个值视为某种特定的types。 这和铸造不太一样。
val b = 1 : Byte val f = 1 : Float val d = 1 : Double
在这种情况下,您正在归因于特殊的可变参数types。 这反映了用于声明varargs参数的星号符号,并可用于Seq[T]
子types的任何types的variables:
def f(args: String*) = ... //varargs parameter, use as an Array[String] val list = List("a", "b", "c") f(list : _*)
这是爆炸数组的scala语法。 一些函数需要一个可变数量的参数,并传入一个数组需要附加: _*
到数组参数。
我是通灵,我预测你会在scala中看到很多通配符: