Currying in JavaScript
Ein sehr praktisches, wenn auch fast unbekanntes Feature in JavaScript, ist das sogenannte Currying.
Mit Currying lassen sich Funktionen mit mehreren Argumenten in neue Funktionen mit nur einem Parameter umwandeln.
Beispiel
Wir möchten ein paar Multiplikationen mit JavaScript durchführen, dann würde eine allgemeine Funktion wohl so aussehen:
function mul(a, b) { return a * b; } console.log(mul(2,3)); //Ergebnis = 6
Wenn jetzt weitere spezielle Funktionen benötigt werden, die eine beliebige Zahl beispielsweise immer mit 2 oder 5 multiplizieren, kann man entweder für jede spezielle Multiplikation eine neue Funktion deklarieren, oder man verwendet Currying und deklariert so nur eine generische Funktion.
Beispiel ohne Currying
function mul2(a) { return a * 2; } function mul5(a) { return a * 5; } console.log(mul2(2)); // Ergebnis = 4 console.log(mul2(3)); // Ergebnis = 6 console.log(mul5(2)); // Ergebnis = 10 console.log(mul5(3)); // Ergebnis = 15
Beispiel mit Currying
function mulGeneric(a) { return function(b) { return a * b; } } var mul2 = mulGeneric(2); console.log(mul2(2)); // Ergebnis = 4 console.log(mul2(3)); // Ergebnis = 6 var mul5 = mulGeneric(5); console.log(mul5(2)); // Ergebnis = 10 console.log(mul5(3)); // Ergebnis = 15
Februar 4, 2012 | Kategorie JavaScript | Kommentieren
