Другое

Карринг [removed] обзор продвинутой техники работы с функциями JS

Lorem ipsum dolor

Карринг JS — это часть функционального программирования. А функциональное программирование — это специфическая манера при программировании проектов, при которой используются необычные возможности преобразования функций. К примеру, вот такие возможности:

  • когда одна функция передается следующей в виде собственного аргумента;
  • или когда одна функция возвращается из какой-нибудь функции;
  • и др.

Методики функционального программирования применяются во многих языках:

  • JavaScript;
  • Haskell;
  • Clojure;
  • Erland;
  • и др.

Например, в том же Haskell карринг изначально присутствует по умолчанию, его не нужно как-то специально проводить. Понятие «функциональное программирование» включает в себя понимание следующих выражении:

  • чистейшая функция;
  • функция наивысшего правила;
  • каррирование или карринг функций;
  • и др.

В нашей статье мы подискутируем о последнем выражении и разберем, что включает в себя понятие «карринг» непосредственно в JavaScript.

 

Карринг JS

Карринг JS — это процесс, при котором функция с определенным количеством аргументов видоизменяется в несколько вложенных функций с таким же количеством одиночных аргументов. Когда вызывается карринг-функция, чтобы передать ей один аргумент, вместе с ней возвращается следующая функция, ждущая передачи следующего аргумента. И так продолжается до того времени, пока не будут переданы все запланированные выражения. Первые полученные выражения будут ожидать до того времени, пока нужное количество аргументов не будет получено. А когда это происходит и последний аргумент был уже получен, то начинает выполняться нужное вычисление и возвращается полученный результат.

Пример простой функции и карринг-функции JS:

Простая функция с несколькими аргументами будет выглядеть так:

function multiply(x, y, z) {

return x * y * z;

}

multiply(2,3,4); // 24

 

В данном исполнении функция примет 3 аргумента и возвратит их произведение.

Карринг-версия этой же функции JS будет выглядеть так:

function multiply(x) {

return (y) => {

return (z) => {

return a * b * c

    }

  }

}

log(multiply(2),(3),(4)) // 24

 

На приведенном выше примере видно, как одна функция с 3-мя аргументами multiply(2,3,4) в карринг-версии преобразуется в 3 функции по одному аргументу каждая: multiply(2),(3),(4).

Как видно, при карринге совокупность вложенных функций будет равняться количеству выражений исходной функции. Когда функция не может принять к себе аргументы или может принять только единственный аргумент, то такая функция не подвергается каррингу.

 

Заключение

Карринг JS позволяет разбивать сложные для понимания функции в более мелкие и простые или, наоборот, собирать сложные композиции из простых функций. Часто переплетение мелких функций увеличивает общую функциональность программы. Но утверждать, что всегда нужно применять карринг JavaScript, тоже неверно, потому что этот процесс не так прост, как кажется с первого взгляда; он достаточно коварен. Особенно с ним испытывают трудности молодые разработчики.

Где нужен карринг в коде JS нужно уметь чувствовать, а не лепить его просто так от балды. А такое «чувство» приходит только со временем, поэтому для начала нужно знать, что есть такой подход в JavaScript, и применять его только тогда, когда будете уверены, что это необходимо на 100%.

Схожие статьи

Физика в компьютерных играх. Как и с помощью чего реализуется?
Другое

Физика в компьютерных играх. Как и с помощью чего реализуется?

Модификатор в языке С: определение, виды, инструкция по применению
Другое

Модификатор в языке С: определение, виды, инструкция по применению

Спрайтовая графика: руководство по созданию спрайтов от А до Я
Другое

Спрайтовая графика: руководство по созданию спрайтов от А до Я

Перегрузка оператора вывода в C: что это и зачем она нужна
Другое

Перегрузка оператора вывода в C: что это и зачем она нужна

×