这是一个语法问题。 我注意到以下两个产生相同的结果
(1 until 10) map (square)
(1 until 10) . map (square)
,其中
def square(x : Int) = x * x
这两者有什么区别吗?如果是这样,是什么?
我注意到了
(1 until 10) map square
有效,但
(1 until 10) . map square
是一个错误(特征TraversableLike中的方法映射缺少参数;如果要将其视为部分应用函数,请使用`_'跟随此方法),但我无法解释错误消息。
答案 0 :(得分:4)
您可以使用中缀表示法(省略点和括号)或通常使用点来调用方法。如果使用常规表示法,则括号必须为括号。见http://docs.scala-lang.org/style/method-invocation.html
答案 1 :(得分:2)
Scala为调用arity-1的方法提供了2种语法:
a.m(b)
a m b
不支持混合两者。
就个人而言,我发现点周围的空间使代码难以阅读
答案 2 :(得分:1)
你可以在http://www.parleys.com/play/51c1994ae4b0d38b54f4621b/chapter0/about观看Martin Odersky关于Scala的演讲,他解释了不同的风格以及何时(在他看来)你应该使用它们。就个人而言,我保持远离空间符号的一致性,但他认为可以将它用于单个表达式,而不是函数调用后的整个函数调用列表。
您可以将它们用于+和 - 等运算符。