【scala】可变参数

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

  

原文地址:https://www.cnblogs.com/zzhangyuhang/p/9002061.html