Ramda:教程不正确? R.divide 中的参数顺序

问题描述 投票:0回答:1

我是函数式编码的新手,我偶然发现了以下教程示例:

const mathPipe = R.pipe(   // 10
  R.multiply(4),           // 4 * 10
  R.add(2),                // 2 + 40
  R.divide(2)              // 2 / 42
);

mathPipe(10)

> 21

当我运行这个时,它给了我

0.047619047619047616
,这对我来说似乎是正确的,因为 Ramda 是功能第一,数据第二。我添加了注释以显示实际计算结果。

然而,教程说预期的答案是

21
,所以实际的最后一个操作将是
42 / 2

所以我想我的问题是:是否有一段时间论证顺序被颠倒了?或者教程根本就是错误的?这是2018年7月开始的。

我希望可以问这个问题,但我对函数式编码很陌生,这有点太令人困惑了。

ramda.js
1个回答
0
投票

我假设您正在谈论这篇文章?这个例子是错误的——作者知道应该发生什么,正如他所描述的:

“Ramdas 的数学函数加、乘、除都需要 2 个参数,但我们只传入第一个参数,第二个值将通过管道传入。

因此,他会知道正在评估

R.divide(2)(current)
(即
2/current
);也就是说,Ramda 的工作方式与作者所解释的完全一样,无论现在还是那时。然而,他的示例中显示的结果与他的解释和实际结果相矛盾。

© www.soinside.com 2019 - 2024. All rights reserved.