Различное поведение диапазона с lodash / fp - PullRequest
0 голосов
/ 01 марта 2019

Метод _.range() с lodash / fp имеет фиксированную арность два.

По сути, вы не можете сделать _.range(4), но с вами нужно сделать _.range(0, 4),Я думаю, это как-то связано с функциональным подходом.

Может кто-нибудь объяснить или указать мне на некоторые полезные ресурсы?Или, может быть, напишите пример, который показывает преимущества его использования.Спасибо.

1 Ответ

0 голосов
/ 01 марта 2019

Поскольку функции 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>
...