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

时间:2014-05-27 11:29:13

标签: function scala arguments

以下内容无法编译,

def echo(sep: String =" ", s: String*) = s.mkString(sep)

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

1 个答案:

答案 0 :(得分:6)

这是有问题的。

考虑一下:

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

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

def echo(sep: String =" ")(s: String*) = s.mkString(sep)

现在你可以使用:

echo()("a", "b", "c") //"a b c"
echo("a")("b", "c")   //"bac"