【发布时间】:2019-03-01 00:01:48
【问题描述】:
_.range() 和 lodash/fp 方法的固定数量为两个。
基本上,你不能做_.range(4),但你必须做_.range(0, 4)。
我想这与函数式方法有关。
有人可以解释或指出一些有用的资源吗? 或者也许写一个例子来展示使用它的优点。谢谢。
【问题讨论】:
标签: functional-programming lodash
_.range() 和 lodash/fp 方法的固定数量为两个。
基本上,你不能做_.range(4),但你必须做_.range(0, 4)。
我想这与函数式方法有关。
有人可以解释或指出一些有用的资源吗? 或者也许写一个例子来展示使用它的优点。谢谢。
【问题讨论】:
标签: functional-programming lodash
由于 lodash/fp 函数是curried,所以你需要有一个固定的arity(一个函数可以接受的参数数量),这意味着该函数不能有可选参数)。
注意: lodash(和 ramda)使用更轻松的柯里化版本。在经典柯里化中,生成的函数一次接收 1 个参数,直到达到原始数量,并调用原始函数。例如,对于 3 的元数 - fn(arg)(arg)(arg)。在 lodash 中,您可以提供多个参数(例如在 _.range(0, 4) 中)而不是 1。因此,如果您有一个 arity 为 3 的函数,则可以使用 fn(arg, arg, arg) 或 fn(arg, arg)(arg) 或 fn(arg)(arg)(arg) 等。 . - 即所有会产生 3 个参数的组合。
如果您通常使用_.range(n)(固定数量为1),则可以使用0 - _.range(0) 调用该函数。由于 lodash/fp 函数的柯里化性质,您将获得一个新函数,它只需要一个数字(上限)。该函数将生成从0 到该数字的范围(如标准 lodash 的范围)。
const range0 = _.range(0)
console.log(range0(3))
console.log(range0(1))
<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>
【讨论】: