AFAIK,在scala中,可以选择使用curly braces {}
或parenthesis ()
向方法发送参数。
math.abs{-10}
def fx(x: Int) = x * x
fx{10}
List(1, 3, 5, 7) filter { _ > 5}
那么,为什么这不适用于对象List中的apply方法?
List.apply{"A", "B"} // does not compile
答案 0 :(得分:2)
当你调用一个方法时,你可以将参数传递给它或在括号内,或者如果只有一个参数则不传递参数。这里fx {10}
传递一个没有括号的返回类型Int {10}
。它相当于fx({10})
。
此处List(1, 3, 5, 7) filter { _ > 5}
您还会在没有括号的情况下传递返回类型{ _ > 5}
的块Int => Boolean
。
在上述两种情况下,最后一个块语句是合法表达式。
此处List.apply{"A", "B"}
您在没有括号的情况下传递了一个块{"A", "B"}
,该块等同于List.apply({"A", "B"})
,而"A", "B"
语句在Scala中是非法的。