Поскольку функции lodash / fp curry , вам необходимо иметь фиксированную арность (число аргументов, которые может принимать функция), что означает, что функция не может иметь необязательные параметры).
Примечание: lodash (и ramda) используют более расслабленную версию карри.В классическом карри, результирующая функция получает 1 аргумент за раз, пока не будет достигнута исходная арность, и будет вызвана исходная функция.Например, для арности 3 - fn(arg)(arg)(arg)
.В то время как в lodash вы можете указать несколько параметров (как в _.range(0, 4)
) вместо 1. Поэтому, если у вас есть функция с арностью 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>