以下不编译,
def echo(sep: String =" ", s: String*) = s.mkString(sep)
所需的函数签名将具有带默认值的第一个参数,其余参数为任意数量的字符串。
这是有问题的。
考虑一下:
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"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句