4D v18

collection.reduce( )

Home

 
4D v18
collection.reduce( )

collection.reduce( )  


 

Die Funktion collection.reduce( ) wendet die Callback Funktion MethodenName auf einen Akkumulator und jedes Element in der Collection an (von links nach rechts), um ihn auf einen einzigen Wert zu reduzieren.

Hinweis: Diese Funktion ändert nicht die ursprüngliche Collection.

In MethodenName übergeben Sie den Namen der Methode zum Bewerten der Collection Elemente, zusammen mit den Parametern in param (optional). MethodenName nimmt jedes Collection Element und führt jede gewünschte Operation durch, um das Ergebnis in $1.accumulator zu akkumulieren, das in $1.value zurückgegeben wird.

In initWert können Sie den Wert zum Initialisieren des Akkumulators übergeben. Ohne diesen Parameter startet $1.accumulator mit Undefiniert.

MethodenName empfängt folgende Parameter:

  • in $1.value: Elementwert zum Bearbeiten
  • in $2: param
  • in $N...: param2...paramN

MethodenName setzt folgende Parameter:

  • $1.accumulator: Wert, der durch die Funktion geändert werden soll und durch initWert initialisiert wird.
  • $1.stop (boolean, optional): wahr, um Aufruf der Methode zu stoppen. Der zurückgegebene Wert ist der letzte bewertete Wert.

 C_COLLECTION($c)
 $c:=New collection(5;3;5;1;3;4;4;6;2;2)
 $r:=$c.reduce("Multiply";1) //gibt 86400 zurück

Der Code für die Methode Multiply lautet:

 If(Value type($1.value)=Is real)
    $1.accumulator:=$1.accumulator*$1.value
 End if

Mehrere Collection Elemente auf ein einziges Element reduzieren:

 C_COLLECTION($c;$r)
 $c:=New collection
 $c.push(New collection(0;1))
 $c.push(New collection(2;3))
 $c.push(New collection(4;5))
 $c.push(New collection(6;7))
 $r:=$c.reduce("Flatten") //$r=[0,1,2,3,4,5,6,7]

Der Code für die Methode Flatten lautet:

 If($1.accumulator=Null)
    $1.accumulator:=New collection
 End if
 $1.accumulator.combine($1.value)

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Collections

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v18)