Heim > Web-Frontend > js-Tutorial > Wie kann eine Curry-JavaScript-Funktion Werte inkrementell summieren?

Wie kann eine Curry-JavaScript-Funktion Werte inkrementell summieren?

Susan Sarandon
Freigeben: 2024-11-28 14:48:16
Original
373 Leute haben es durchsucht

How Can a Curried JavaScript Function Incrementally Sum Values?

Inkrementelles Summieren von Werten mit einer variadischen Curry-Funktion

Können wir eine JavaScript-Funktionssumme erstellen, die sich wie folgt verhält?

sum(1)(2) = 3
sum(1)(2)(3) = 6
sum(1)(2)(3)(4) = 10
Nach dem Login kopieren

Kurz gesagt, die Funktion sollte es uns ermöglichen, durch wiederholte Eingabe zusätzlicher Summen eine Summe zu akkumulieren Werte.

Zunächst wurde uns gesagt, dass eine solche Funktion in JavaScript unmöglich sei. Es entstand jedoch ein alternativer Ansatz: Hinzufügen eines Vorzeichens vor der Summenfunktion.

+sum(1)(2)(3)(4)
Nach dem Login kopieren

Wenn das Vorzeichen in Verbindung mit einer Funktion verwendet wird, wandelt es den Rückgabewert der Funktion in eine Zahl um. In diesem Fall gibt die Funktion sum also tatsächlich Zahlen zurück, die dann bei jedem weiteren Aufruf erhöht werden.

Um das gewünschte Verhalten zu erreichen, können wir in unserer Summenfunktion eine Currying-Technik anwenden. So sieht die Implementierung aus:

function sum(n) {
  var v = function(x) {
    return sum(n + x);
  };

  v.valueOf = v.toString = function() {
    return n;
  };

  return v;
}

console.log(+sum(1)(2)(3)(4)); // Output: 10
Nach dem Login kopieren

Diese Implementierung verpackt die Summenfunktion in der v-Variablen, die dann zurückgegeben wird. Mit der v-Funktion können wir der n-Variablen schrittweise Werte hinzufügen. Indem wir v mithilfe des Operators auf eine Zahl umwandeln, können wir die kumulierte Summe erhalten.

Im Beispiel gibt die Anweisung console.log 10 aus, was der Summe von 1, 2, 3 und 4 entspricht.

Das obige ist der detaillierte Inhalt vonWie kann eine Curry-JavaScript-Funktion Werte inkrementell summieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage