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))