scala:可变长参数和:_*符号
定义一个可变参数的函数
可变的参数只能是函数最后一个参数,而且参数类型要一致。
def f(nums: Int*){
println(nums.getClass)
for(i <- nums){
println(i)
}
}
// f: (nums: Int*)Unit
调用函数
scala> f()
class scala.collection.immutable.Nil$
scala> f(1)
class scala.collection.mutable.WrappedArray$ofInt
1
scala> f(1, 2)
class scala.collection.mutable.WrappedArray$ofInt
1
2
:_*
符号
a: A
是类型归属,意思是a的类型为A。
:_ *
是类型归属的一个特殊实例,它告诉编译器将一个序列类型的单个参数当作可变参数序列。
scala> f(Array(1,2):_*)
class scala.collection.mutable.WrappedArray$ofInt
1
2
//f(Array(1,2):_*)的意思就是将Array(1,2)当作其元素类型(Int类型)的可变参数序列。