4D v16.3MULTI SORT ARRAY |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
MULTI SORT ARRAY
MULTI SORT ARRAY
O comando MULTI SORT ARRAY lhe permite realizar um tipo de ordenação multi-nível em um conjunto de arrays. Este comando aceita duas sintaxes diferentes.
Você pode passar um número ilimitado de pares (Array;> or <) e/ou somente matrizes. Todos os arrays passados como parâmetros são ordenados de forma sincronizada. Você pode passar arrays de qualquer tipo, exceto para Ponteiros ou arrays de Imagens. Você pode ordenar um elemento de um array bidimensional (i.e. a2DArray{$vlThisElement}), mas não pode classificar o array 2D em si (i.e. a2DArray). Para utilizar o conteúdo de um array como critério de ordenação, passe o parâmetro de ordem. O valor do parâmetro (> ou <) determina a ordem (ascendente ou descendente), no qual o array será ordenado. Se o parâmetro de ordem for omitido, o conteúdo do array não será utilizado como critério de classificação. Nota: tenha em mente que pelo menos um critério de ordenação deve ser passado para que o comando funcione. Se nenhum critério de ordenação é definido, é gerado um erro. Os níveis de ordenação são determinados pela ordem em que os arrays são passados para o comando: a posição de um array com um critério de classificação na sintaxe determina o seu nível de classificação. • Segunda sintaxe: MULTI SORT ARRAY (ptrArrayNome; sortArrayNome) Esta sintaxe, mais complexa, é também um valor incalculável para desenvolvimentos genéricos (por exemplo, você pode criar um método genérico para classificar arrays de todos os tipos, ou ainda, criar o equivalente de um comando genérico SORT ARRAY).O parâmetro ptrArrayNome contém o nome de um array de array de ponteiros; cada elemento desse array é um ponteiro que designa um array para ser ordenado. As ordenações são executadas na ordem do array de ponteiros definido por ptrArrayNome. Nota: ptrArrayNome pode ser um array de processo local ($ptrArrayNome), um processo (ptrArrayNome) ou um inter-processo (<>ptrArrayNome) de ponteiros. Por outro lado, os elementos desse array devem apontar para um processo ou arrays de inter-processo. O parâmetro sortArrayNome contém o nome de um array no qual cada elemento indica a ordem de classificação (-1, 0 ou 1) do elemento correspondente do array de ponteiros: Nota: Você não pode classificar arrays do tipo Ponteiro ou imagem. Você pode ordenar um elemento de um array bidimensional (i.e. a2DArray{$vlThisElement}), mas não pode classificar o array 2D em si (i.e. a2DArray). Para cada elemento do array ptrArrayNome, deve haver um elemento correspondente do array sortArrayNome. Ambos os arrays devem, portanto, ter exatamente o mesmo número de elementos. O exemplo a seguir usa a primeira sintaxe: ele cria quatro arrays e os classifica por cidade (ordem crescente) e depois por salário (por ordem decrescente) com os dois últimos arrays, names_array e telNum_array, sendo sincronizados de acordo com os critérios de classificação anteriores: ALL RECORDS([Empregados]) Se você quiser que os nomes dos arrays sejam usados como um terceiro critério de ordenação, basta adicionar > ou < após o parâmetro names_array. MULTI SORT ARRAY(cidades;>;salarios;nomes;telNums) é equivalente a: SORT ARRAY(cidades;salarios;nomes;telNums;>) O exemplo a seguir usa a segunda sintaxe: ele cria quatro arrays e os classifica por cidade (ordem crescente) e companhia (ordem decrescente); os dois últimos arrays, nomes_Array e telNum_Array, sendo sincronizados de acordo com critérios de classificação anteriores: ALL RECORDS([Empregados]) Se quiser que o array de nomes seja usado como um terceiro critério de ordenação, você precisa atribuir o valor 1 para o elemento Ordem_array{3}. Ou então, se você quiser os arrays sejam classificados pelo critério único da cidade, atribua o valor 0 para os elementos ordem_array{2}, ordem_array{3} e ordem_array{4} . Desta forma, você obtém um resultado idêntico ao. SORT ARRAY(cidades; empresas; nomes; telNums;>).
Ver também
|
PROPRIEDADES
Produto: 4D HISTÓRIA
Modificado: 4D 2004 ARTICLE USAGE
Manual de linguagem 4D ( 4D v16) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||