Saltar para o conteúdo principal
Versão: 19

Collection

Coleções são listas ordenadas de valores de tipos diferentes ou não (texto, número, objeto, booleano, coleção ou null).

Para gerenciar as variáveis de tipo Coleção se deve utilizar a notação de objetos (ver Syntax basics).

Para acessar a um elemento de coleção, é necessário passar o número do elemento dentro de parênteses rectos:

collectionRef[expression]

Pode passar toda expressão 4D válida que devolva um inteiro positivo na expressão. Exemplos:

 myCollection[5]  //aceso ao 6º elemento da coleção
myCollection[$var]

Atenção: os elementos da coleção estão numerados desde 0.

Pode atribuir um valor a um elemento da coleção ou obter o valor de um elemento da coleção utilizando a notação de objetos:

 myCol[10]:="My new element"
$myVar:=myCol[0]

Se atribuir um índice de elemento que ultrapasse o último elemento existente da coleção, a coleção se redimensiona automaticamente e a todos os novos elementos intermediários se lhes atribui um valor nulo:

 C_COLLECTION(myCol)
myCol:=New collection("A";"B")
myCol[5]:="Z"
//myCol[2]=null
//myCol[3]=null
//myCol[4]=null

Inicialização

Coleções devem ter sido inicializadas, por exemplo, usando o comando New collection, caso contrário, tentar ler ou modificar seus elementos gerará um erro de sintaxe.

Exemplo:

 var $colVar : Collection //criação de uma variável 4D de tipo coleção
$colVar:=New collection //initialização da coleção e atribuição à variável 4D

Coleção regular ou partilhada

Pode criar dois tipos de coleções:

  • regular (non-shared) collections, using the New collection command. Essas coleções podem ser editadas sem qualquer controle de acesso específico mas não podem ser compartilhadas entre processos.
  • coleções compartidas, utilizando o comando New shared collection. Essas coleções podem ser partilhadas entre processos, incluindo threads preemptivos. Access to these collections is controlled by Use... End use structures.

Para saber mais, consulte a seção Objetos e coleções compartidos.

Funções de Collection

As referências a coleções 4D se beneficiam de métodos especiais (as vezes chamados funções membro). As funções de coleção estão listadas na seção Class API Reference.

Por exemplo:

$newCol:=$col.copy() //cópia de $col a $newCol
$col.push(10;100) //adiciona 10 e 100 para a coleção

Alguns métodos retornam a coleção original depois de moficiação, para que possa rodar as chamadas em sequência:

 $col:=New collection(5;20)
$col2:=$col.push(10;100).sort() //$col2=[5,10,20,100]

parâmetro caminoPropriedade

Vários métodos aceitam uma propertyPath como parâmetro. Este parâmetro significa:

  • um nome de objeto propriedade por exemplo "Sobrenome"
  • ou uma rota de propriedades de objeto, ou seja, uma sequência hierárquica de subpropriedades vinculadas com caracteres de ponto, por exemplo "empregado.filhos.nome".

Warning: When using functions and propertyPath parameters, you cannot use ".", "[ ]", or spaces in property names since it will prevent 4D from correctly parsing the path:

 $vmin:=$col.min("My.special.property") //indefinido
$vmin:=$col.min(["My.special.property"]) //erro