Scala允许函数的最后一个参数是可重复的(Repeated)。这使得用户可传递变长参数列表给函数。为了指示出可重复参数,需要在该参数的类型后面加上一个星号。比如:
def echo(args: String*) = for (arg <- args) println(arg)
按上面的定义,可用0或多个String参数调用echo函数:
echo()
echo("one")
echo(“hello”,“world!”)
在函数内部,可重复参数的类型是该参数申明类型的数组形式。因此,args这个被声明成了String类型的可重复参数,在echo函数内部其实是Array[String]类型。不过,如果直接将一个对应类型的数组参数传递给可重复类型参数,那么你将会看到一个编译错误:
val arr = Array("what's", "up", "doc?")
echo(arr) // 编译错误:type mismatch
为了完成参数传递,你需要在数组参数后面加上一个:
和_*
,就像这样:
echo(arr: _*)
这种符号(_*
)告诉编译器将数组中的每个元素作为参数传递给echo函数,而不是将数组作为一个单一参数进行传递。
网友评论