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); }