Funktionale Programmierung / Reduce-Funktion
Reduce-Funktion
Mit ".reduce" können alle Werte einer Liste auf einen einzelnen Gesamtwert reduziert werden.
Each
Die zu übergebenden Argumente sind hierbei:
- Startwert
- VarLet, in die der Wert von "each" zugewiesen wird.
- Berechnung
data = [ 4, 9, 5, 2, 6 ]
data.reduce( 5, :e, e[ 1 ] + e[ 2 ] ).print
Bei ".reduce" enthält "each" eine Liste mit 2 Werten. Der erste Wert ist das aktuelle Ergebnis, der zweite Wert ist das aktuell verarbeitete Objekt aus der Liste.
In diesem Beispiel werden somit alle Werte, ausgehend vom Startwert 5 summiert. Das Ergebnis ist somit: 31
FuncLet
Ebenso kann eine andere Funktion zur Verarbeitung aufgerufen werden, die in diesem Fall 2 Parameter benötigt:
::myReduce( sum, val ) = sum * val
data = [ 4, 9, 5, 2, 6 ]
data.reduce( 2, ::this.myReduce ).print
Als Ergebnis kommt hier 4320 zurück: 2*4*9*5*2*6 = 4320
- Powered by
OghsWiki
-