xs map(f)和xs之间的差异。图(f)在斯卡拉

时间:2013-11-05 21:33:22

标签: scala syntax

这是一个语法问题。 我注意到以下两个产生相同的结果

(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中的方法映射缺少参数;如果要将其视为部分应用函数,请使用`_'跟随此方法),但我无法解释错误消息。

3 个答案:

答案 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的演讲,他解释了不同的风格以及何时(在他看来)你应该使用它们。就个人而言,我保持远离空间符号的一致性,但他认为可以将它用于单个表达式,而不是函数调用后的整个函数调用列表。

您可以将它们用于+和 - 等运算符。