【发布时间】:2018-05-31 00:18:41
【问题描述】:
我总是忘记 reduce 在 ruby (https://ruby-doc.org/core/Enumerable.html#method-i-reduce) 中的参数,它是这样调用的:
(5..10).reduce { |sum, n| sum + n }
首先传入累加器是否有语言设计原因,还是只是任意选择? JS 的工作方式相同。
【问题讨论】:
-
这很有趣。我会要求保持开放状态,以防万一有一个原因不仅仅是历史上它是如何完成的。我有一种预感,有些东西与函数式编程(currying,部分应用程序)相关,但我不知道。
-
您好,您能多解释一下是什么让您感到困惑吗?您在序列 5、6、7、8、9、10 上调用
reduce,块的第一次迭代是5 + 6。这对我来说似乎完全合乎逻辑,特别是因为reduce的语义本质上是“在所有元素之间插入操作”,即您的示例中的5 + 6 + 7 + 8 + 9 + 10。 -
@JörgWMittag 我并不感到困惑,我正在寻找一个原因,为什么将参数按照它们在函数本身的设计中的顺序放置。
标签: ruby