elm*_*elm 2 arguments scala function
以下不编译,
def echo(sep: String =" ", s: String*) = s.mkString(sep)
Run Code Online (Sandbox Code Playgroud)
所需的函数签名将具有带默认值的第一个参数,其余为任意数量的字符串.
这是有问题的.
考虑一下:
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)