4D v18

collection.orderByMethod( )

Home

 
4D v18
collection.orderByMethod( )

collection.orderByMethod( )  


 

Die Funktion collection.orderByMethod( ) sortiert die Elemente der Collection nach der Methode MethodenName und gibt eine neue sortierte Collection zurück.

Diese Funktion gibt eine flache Kopie (shallow copy) zurück, d.h. Objekte oder Collections der beiden Collections nutzen dieselbe Referenz. Ist die ursprüngliche Collection eine shared collection, ist die zurückgegebene Collection ebenfalls eine shared collection.

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

In MethodenName übergeben Sie eine Vergleichsmethode, die zwei Werte vergleicht und wahr in $1.result zurückgibt, wenn der erste Wert kleiner als der zweite ist. Sie können bei Bedarf weitere Parameter übergeben:

  • MethodenName empfängt folgende Parameter:
    • $1 (object), es gilt:
      • $1.value (beliebiger Typ): erster Elementwert zum Vergleichen
      • $1.value2 (beliebiger Typ): zweiter Elementwert zum Vergleichen
    • $2...$N (beliebiger Typ): extra Parameter
  • MethodenName setzt folgende Parameter:
    • $1.result (boolean): wahr wenn $1.value < $1.value2, sonst false

Eine Collection mit Strings nicht in alphabetischer, sondern in numerischer Reihenfolge sortieren:

 C_COLLECTION($c)
 $c:=New collection
 $c.push("33";"4";"1111";"222")
 $c2:=$c.orderBy() //$c2=["1111","222","33","4"], alphabetische Reihenfolge
 $c3:=$c.orderByMethod("NumAscending") // $c3=["4","33","222","1111"]

Der Code für NumAscending lautet:

 $1.result:=Num($1.value)<Num($1.value2)

Eine Collection mit Strings nach Wortlänge sortieren:

 C_COLLECTION($fruits)
 $fruits:=New collection("Orange";"Apple";"Grape";"pear";"Banana";"fig";"Blackberry";"Passion fruit")
 $c2:=$fruits.orderByMethod("WordLength")
  //$c2=[Passion fruit,Blackberry,Orange,Banana,Apple,Grape,pear,fig]

Der Code für WordLength lautet:

 $1.result:=Length(String($1.value))>Length(String($1.value2))



Siehe auch 

collection.orderBy( )
collection.sort( )

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Collections

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v18)