Поиск по сайту
Ctrl + K
Вопросы по JS

Примеры использования каррирования и частичного применения

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

Каррирование

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

Пример каррирования

Рассмотрим функцию, которая складывает три числа:

function add(a, b, c) {
    return a + b + c;
}

Теперь давайте превратим эту функцию в курируемую версию:

function curriedAdd(a) {
    return function(b) {
        return function(c) {
            return a + b + c;
        };
    };
}

// Использование
const add5 = curriedAdd(5);      // Теперь функция ожидает b
const add5And3 = add5(3);        // Теперь функция ожидает c
const result = add5And3(2);      // Результат: 10 (5 + 3 + 2)

console.log(result);

Частичное применение

Частичное применение (partial application) позволяет создавать новую функцию, фиксируя некоторые аргументы исходной функции. Это отличается от каррирования тем, что новая функция может принимать более одного аргумента, в отличие от каррированного подхода.

Пример частичного применения

Используем ту же функцию сложения:

function add(a, b, c) {
    return a + b + c;
}

// Функция для частичного применения
function partial(fn, ...args) {
    return function(...newArgs) {
        return fn(...args, ...newArgs);
    };
}

// Использование
const add5 = partial(add, 5);    // Теперь функция ожидает b и c
const result = add5(3, 2);       // Результат: 10 (5 + 3 + 2)

console.log(result);

Заключение

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