Scala允许使用可变的参数列表。
语法
在声明的参数类型后边添加星号(*)
示例
object HelloWorld{
def hello(args:String*): Unit ={
for(arg <- args)
println("hello "+arg)
}
def main(args:Array[String]): Unit ={
hello("zhangyuhang","zhangqiuyue")
}
}
结果
hello zhangyuhang
hello zhangqiuyue
我们可以看到,我们在定义args参数的时候,后边注明了参数类型,在参数类型后边加了一个星号实现了可变参数。
但是,我们并不能使用不同类型的可变参数,也就是说必须一个类型。
实际上,String* 传入的参数会被构成一个Array[String]
但是,我们在使用的时候必须要一个参数一个参数的传入,数量并没有限制。
既然不是参数最终是个Arrary[String]类型嘛,那么我传入一个Array[String]类型参数可以嘛?
不行,会报错的。
val strArr = Array("zhangyuhang","zhangqiuyue");
hello(strArr);//报错
hello(strArr:_*);//正确,strArr:_* 表示把strArr内的元素逐个传入hello函数中
我们在java中使用的可变参数要用到 ... 注意区分。
public void hello(String... args){
for(String arg:args)
System.out.println("hello "+arg);
}