Scala中的Repeated Parameters

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函数,而不是将数组作为一个单一参数进行传递。

你可能感兴趣的