Czym jest currying w JavaScript?

Currying to technika przekształcania funkcji z wieloma argumentami w sekwencję funkcji, z których każda przyjmuje pojedynczy argument. Głównym celem currying jest umożliwienie częściowego stosowania funkcji, co oznacza, że funkcja może być wywołana z mniejszą liczbą argumentów niż jest zdefiniowana, zwracając nową funkcję, która przyjmuje pozostałe argumenty.

Jak działa currying?

Zasadniczo, currying przekształca funkcję o sygnaturze f(a, b, c) w f(a)(b)(c). To pozwala na wywołanie funkcji z jednym argumentem na raz i używanie tych częściowo zastosowanych funkcji w różnych kontekstach bez konieczności ponownego definiowania oryginalnej funkcji.

Przykład użycia currying w JavaScript

Rozważmy prosty przykład funkcji, która mnoży trzy liczby. Zastosujemy currying, aby przekształcić tę funkcję w sekwencję funkcji, z których każda przyjmuje pojedynczy argument

// Definicja funkcji z currying
function multiply(a) {
    return function(b) {
        return function(c) {
            return a * b * c;
        };
    };
}

// Użycie funkcji z currying
let result = multiply(2)(3)(4); // Wynik: 24
console.log(result);

Kod  HTML z JS

Aby zilustrować currying w praktyce, stwórzmy prosty interfejs użytkownika, który pozwala na wprowadzenie trzech liczb i wyświetla wynik ich pomnożenia za pomocą funkcji currying.

<!DOCTYPE html>
<html>
<head>
    <title>Currying w JavaScript</title>
</head>
<body>
    <input id="number1" type="number" placeholder="Wpisz pierwszą liczbę" />
    <input id="number2" type="number" placeholder="Wpisz drugą liczbę" />
    <input id="number3" type="number" placeholder="Wpisz trzecią liczbę" />
    <button onclick="showResult()">Pomnóż liczby</button>
    <p>Wynik: <span id="result"></span></p>

    <script>
        // Funkcja z currying do mnożenia trzech liczb
        function multiply(a) {
            return function(b) {
                return function(c) {
                    return a * b * c;
                };
            };
        }

        // Funkcja wyświetlająca wynik
        function showResult() {
            let a = document.getElementById('number1').value;
            let b = document.getElementById('number2').value;
            let c = document.getElementById('number3').value;
            document.getElementById('result').innerText = multiply(a)(b)(c);
        }
    </script>
</body>
</html>

W tym przykładzie, po wprowadzeniu trzech liczb i kliknięciu przycisku, skrypt używa funkcji multiply z currying, aby obliczyć i wyświetlić wynik mnożenia.

Podsumowanie

Currying jest potężnym narzędziem w JavaScript, które pozwala na tworzenie bardziej elastycznych i wyrafinowanych funkcji. Umożliwia to łatwe tworzenie częściowo zastosowanych funkcji, które mogą być używane w różnych kontekstach. Currying może również poprawić czytelność i organizację kodu, pozwalając na bardziej modułową i funkcjonalną strukturę programu.

 

Scroll to Top