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.