La méthode collection.orderByMethod( ) retourne une nouvelle collection contenant tous les éléments de la collection d'origine triés selon les critères définis par nomMéthode. Cette méthode retourne une "shallow copy" (copie superficielle), ce qui signifie que les objets ou les collections présents dans les deux collections partagent la même référence.
Si la collection d'origine est une collection partagée, la collection retournée est également une collection partagée.
Note : Cette méthode ne modifie pas la collection d'origine.
Dans nomMéthode, passez le nom de la méthode qui compare deux valeurs et retourne true dans $1.result si la première valeur est inférieure à la seconde valeur. Si nécessaire, vous pouvez passer des paramètres supplémentaires à la méthode via extraParam.
- nomMéthode reçoit les paramètres suivants :
- $1 (objet), où :
- $1.value (tout type) : valeur du premier élément à comparer
- $1.value2 (tout type) : valeur du second élément à comparer
- $2...$N (tout type) : paramètres supplémentaires (extraParam)
- nomMéthode doit fixer le paramètre suivant :
- $1.result (booléen) : vrai si $1.value < $1.value2, sinon faux
Vous souhaitez trier une collection de chaînes contenant des nombres par valeur plutôt que par ordre alphabétique :
Voici le code de la méthode NumAscending:
$1.result:=Num($1.value)<Num($1.value2)
Vous souhaitez trier une collection de chaînes selon leur longueur :
C_COLLECTION($fruits)
$fruits:=New collection("Orange";"Apple";"Grape";"pear";"Banana";"fig";"Blackberry";"Passion fruit")
$c2:=$fruits.orderByMethod("WordLength")
Voici le code de la méthode WordLength:
$1.result:=Length(String($1.value))>Longueur(Chaine($1.value2))
Vous souhaitez trier une collection par code de caractère ou par langage :
var $strings1;$strings2 : Collection
$strings1:=New collection("Alpha";"Charlie";"alpha";"bravo";"Bravo";"charlie")
$strings2:=$strings1.orderByMethod("sortCollection";sk codes caractère)
$strings2:=$string1s.orderByMethod("sortCollection";sk strict)
La méthode sortCollection :
var$1Object
var$2Integer
$1.result:=(Compare strings($1.value;$1.value2;$2)<0)