以下内容无法编译,
def echo(sep: String =" ", s: String*) = s.mkString(sep)
所需的函数签名将具有带默认值的第一个参数,其余为任意数量的字符串。
答案 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"