Skip to main content
Version: v19 R8 BETA

Collection

As colecções são listas ordenadas de valores de tipos semelhantes ou mistos (texto, número, data, objecto, booleano, colecção, ou nulo).

As variáveis de tipo de colecção são geridas utilizando notação de objectos (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 qualquer expressão 4D válida que devolva um número 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 de colecção ou obter um valor de um elemento de colecção:

 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:

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

Inicialização

As coleções devem ter sido inicializadas, por exemplo utilizando o comando New collection, do contrário ao tentar ler ou modificar seus elementos se 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:

  • colecções regulares (não partilhadas), utilizando o comando Nova colecção . Essas coleções podem ser editadas sem qualquer controle de acesso específico mas não podem ser compartilhadas entre processos.
  • colecções partilhadas, utilizando o comando Nova colecção partilhada . 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 de colecção 4D beneficiam de funções de classe especiais (por vezes nomeadas funções de membro). As funções de recolhimento 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

Algumas funções devolvem a colecção original após modificação, para que se possa executar as chamadas numa sequência:

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

Parâmetro rotaPropriedade

Várias funções aceitam um 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".

Advertência: Ao usar funções e parâmetros de propriedadePath, não se pode usar ".", "[ ]", ou espaços nos nomes das propriedades, uma vez que isso impedirá que 4D analise correctamente o caminho:

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