O método collection.orderByMethod( ) devolvido uma nova coleção que contém todos os elementos da coleção na ordem definida pelo método nomMet.
Este método devolve uma cópia superficial, o que significa que os objetos ou coleções em ambas coleções compartem a mesma referência. Se a coleção original for uma coleção compartida, a coleção devolvida também é uma coleção compartida.
Nota: este método não modifica a coleção original.
Em nomMet, passe um método de comparação que compara dois valores e devolve true em $1.result se o primeiro valor for menor que o segundo valor. Pode oferecer parâmetros adicionais a nomMet se for necessário.
- nomMet receberá os parâmetros abaixo:
- $1 (objeto), onde:
- $1.value (todo tipo): valor do primeiro elemento a comparar
- $1.value2 (todo tipo): valor do segundo elemento a comparar
- $2...$N (todo tipo): parâmetros adicionais
- nomMet define o parâmetro abaixo:
- $1.result (booleano): true si $1.value < $1.value2, do contrário false
Se quiser ordenar uma coleção de strings em ordem numérica ao invés de ordem alfabética:
Aqui está o código para NumAscending:
$1.result:=Num($1.value)<Num($1.value2)
Se quiser ordenar uma coleção de strings por sua longitude:
C_COLLECTION($fruits)
$fruits:=New collection("Orange";"Apple";"Grape";"pear";"Banana";"fig";"Blackberry";"Passion fruit")
$c2:=$fruits.orderByMethod("WordLength")
Aqui está o código para WordLength:
$1.result:=Length(String($1.value))>Length(String($1.value2))
Se quiser ordenar uma coleção por código de caractere ou linguagem:
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)
O método sortCollection:
var$1Object
var$2Integer
$1.result:=(Compare strings($1.value;$1.value2;$2)<0)