Currying einer variadischen Summenfunktion: Erkundung ihres Innenlebens
Erstellen einer Summenfunktion in JavaScript, die mehrere Argumente akzeptiert und in einer Curry-Form funktioniert Art und Weise scheint eine unüberwindbare Aufgabe zu sein. Mit der Currying-Technik ist dies jedoch tatsächlich möglich.
Currying beinhaltet die Konvertierung einer Funktion, die mehrere Argumente annimmt, in eine Reihe von Funktionen, von denen jede ein einzelnes Argument annimmt. Dadurch können wir eine Summenfunktion erstellen, die nacheinander angewendet werden kann, um mehrere Zahlen zu addieren.
Das Geheimnis liegt in der Art und Weise, wie wir die Funktion definieren:
function sum(n) { var v = function(x) { return sum(n + x); };
Hier ist sum(n) gibt eine Funktion v zurück, die ein Argument x akzeptiert und das Ergebnis des Aufrufs von sum mit n x zurückgibt. Dadurch können wir mehrere Aufrufe zum Summieren verketten und dabei jeweils die nächste Zahl zum vorherigen Ergebnis hinzufügen.
Um das Endergebnis zu verarbeiten, definieren wir die Methoden valueOf und toString der Funktion:
v.valueOf = v.toString = function() { return n; };
Dadurch wird sichergestellt, dass, wenn wir v als Wert aufrufen, die kumulierte Summe n zurückgegeben wird.
Schließlich verwenden wir den unären Plusoperator ( ), um das Ergebnis umzuwandeln der Curry-Funktion in eine Grundzahl umwandeln.
console.log(+sum(1)(2)(3)(4));
Dies gibt das erwartete Ergebnis aus: 10.
Obwohl es auf den ersten Blick kontraintuitiv erscheinen mag, ist das Erstellen einer variadischen Curry-Summenfunktion in JavaScript ist mit den Prinzipien des Curryings und der geschickten Manipulation von Funktionseigenschaften möglich.
Das obige ist der detaillierte Inhalt vonWie kann eine Curry-Summenfunktion in JavaScript mit mehreren Argumenten umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!