1

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

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

4

3 回答 3

4

您可以使用中缀表示法(省略点和括号)或通常使用点来调用方法。如果您使用正常符号,则括号是强制性的。见http://docs.scala-lang.org/style/method-invocation.html

于 2013-11-05T22:00:18.257 回答
2

Scala 提供了 2 种语法来调用 arity-1 的方法:

a.m(b)
a m b

不支持两者混合。

就个人而言,我发现点周围的空间使代码难以阅读

于 2013-11-05T22:01:27.777 回答
1

你可以在http://www.parleys.com/play/51c1994ae4b0d38b54f4621b/chapter0/about上观看 Martin Odersky 关于 Scala 风格的演讲,他解释了不同的风格以及何时(在他看来)你应该使用它们。就我个人而言,为了保持一致性,我远离空格符号,但他认为可以将它用于单个表达式,而不是函数调用之后的整个函数调用列表。

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

于 2013-11-05T22:07:53.970 回答