【发布时间】:2015-03-02 14:42:48
【问题描述】:
我目前正在学习 Scala,我只是想知道 fold-left。 由于 fold-left 是柯里化的,你应该能够得到一个带有第一个参数的部分应用函数(PAF),如下所示。
(0 /: List(1, 2, 3)) _
但实际上,我有一个错误。
<console>:8: error: missing arguments for method /: in trait TraversableOnce;
follow this method with `_' if you want to treat it as a partially applied function
然后我通过右折叠尝试了同样的事情,如下所示
(List(1, 2, 3) :\ 0) _
通过这种方式,它运行正确,我可以得到一个 PAF,例如 ((Int, Int) => Int) => Int
我知道我可以使用 foldLeft 方法得到一个 PAF,但我想知道是否可以用 '/:' 表示它。
【问题讨论】:
-
可能是由于运算符的关联,因为它涉及右侧的冒号。尝试将下划线移到左侧。
-
你也可以只使用 foldLeft。
-
应该避免使用 /: 和 :\,而不是更明确的 foldLeft 和 foldRight。您可能想阅读这份官方风格指南:docs.scala-lang.org/style/method-invocation.html
标签: scala partialfunction foldleft