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类型)的可变参数序列。
posted @ 2018-12-29 09:04  xuejianbest  阅读(833)  评论(0编辑  收藏  举报