【问题标题】:Different behaviour of range with lodash/fplodash/fp 范围的不同行为
【发布时间】:2019-03-01 00:01:48
【问题描述】:

_.range()lodash/fp 方法的固定数量为两个。

基本上,你不能做_.range(4),但你必须做_.range(0, 4)。 我想这与函数式方法有关。

有人可以解释或指出一些有用的资源吗? 或者也许写一个例子来展示使用它的优点。谢谢。

【问题讨论】:

    标签: functional-programming lodash


    【解决方案1】:

    由于 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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多