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:
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")
Der Code für WordLength lautet:
$1.result:=Length(String($1.value))>Length(String($1.value2))
Eine Collection nach Zeichencode oder Sprache sortieren:
var $strings1;$strings2 : Collection
$strings1:=New collection("Alpha";"Charlie";"alpha";"bravo";"Bravo";"charlie")
$strings2:=$strings1.orderByMethod("sortCollection";sk character codes)
$strings2:=$string1s.orderByMethod("sortCollection";sk strict)
Die Methode sortCollection lautet:
var$1Object
var$2Integer
$1.result:=(Compare strings($1.value;$1.value2;$2)<0)