Scala函数参数,默认值后跟多参数

elm*_*elm 2 arguments scala function

以下不编译,

def echo(sep: String =" ", s: String*) = s.mkString(sep)
Run Code Online (Sandbox Code Playgroud)

所需的函数签名具有带默认值的第一个参数,其余为任意数量的字符串.

Kig*_*gyo 6

这是有问题的.

考虑一下:

echo("a", "b", "c"):"a"现在是分离器还是它属于s?这不能由编译器决定,因为两者都可以工作.

解决方法可以是使用多个参数列表.

def echo(sep: String =" ")(s: String*) = s.mkString(sep)
Run Code Online (Sandbox Code Playgroud)

现在你可以使用:

echo()("a", "b", "c") //"a b c"
echo("a")("b", "c")   //"bac"
Run Code Online (Sandbox Code Playgroud)