Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v19.8
Sobre coleções

Sobre coleções  


 


Os comandos de tema Coleções criam e trabalham com coleções.

As coleções são listas ordenadas de valores de tipos similares ou mistos (texto, número, objeto, booleano, coleção ou null). Para manipular as variáveis de tipo Coleção, deve usar a notação de objeto (ver Usar notação padrão objeto). Para informação adicional sobre coleções 4D, consulte o parágrafo na seção RELATE MANY.

Para acessar a um elemento de coleção, deve passar o número de elemento entre colchetes:

collectionRef[expression]

Pode passar qualquer expressão 4D válida que devolva um inteiro positivo em expression. Exemplos:

 myCollection[5]  //acesso ao 6 ° elemento da coleção
 myCollection[$var]

Nota: lembre que os elementos da coleção estão numerados desde 0.

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

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

Se atribuir um índice de elemento que supera o último elemento existente da coleção, a coleção se redimensionará automaticamente e a todos os elementos intermedários novos se lhes atribuirá um valor null:

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

Pode criar dois tipos de coleções:

  • coleções normais (não compartilhadas), utilizando o comando New collection.
    Estas coleções admitem uma grande quantidade de tipos de dados, incluídas imagens e ponteiros. Podem ser editadas sem nenhum controle de acesso específico.
  • coleções compartidas, utilizando o comando New shared collection.
    Estas coleções podem ser compartidas entre processos, incluidos os thread preemptivos. O acesso a estas coleções está controlado por estruturas Use...End use. Para saber mais, consulte  Objetos compartidos e Coleções compartidas

As referências de coleções 4D se beneficiam de métodos especiais chamados member method. Graças à notação objeto (ver Usar notação padrão objeto), estes métodos podem ser aplicadas às referências de coleção utilizando a sintaxe abaixo:

{$result:=}myCollection.method( {params} )

Lembre que, mesmo se não tiver parâmetros, uma  member function deve ser chamada com parêntesis (), do contrário se gera um erro de sintaxe.

Por exemplo:

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

Algumas métodos devolvem a coleção original depois da modificação, para que possa executar as chamadas em uma sequência:

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

Atenção: quando utilizar member functions, deve utilizar rotas de propriedade conformes com ECMA Script, ou seja, não pode utilizar ".", "[ ]",
nem espaços nos nomes de propriedades. Por exemplo, de acordo com a seção identificador notação objeto, os nomes de propriedades tais como $o["My.special.property"] são suportados. Entretanto, não serão utilizáveis com métodos:

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

Várias member functions aceitam uma rotaProp como parâmetro. Este parâmetro pode conter:

  • seja um nome de propriedade de objeto, por exemplo, "sobrenome"
  • ou uma rota de propriedade de objeto, ou seja, uma sequência hierárquica de sub-propriedades unidas com caracteres de ponto, por exemplo "empregado.filho.sobrenome".

Como consequência, quando se espera um parâmetro rotaProp, utilizando nomes de propriedade que contenham um ou mais "." não é suportado já que evitará que 4D analize corretamente a rota.

Nota: para saber mais, consulte identificador notação objeto.

 
PROPRIEDADES 

Produto: 4D
Tema: Coleções

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v19)
Manual de linguagem 4D ( 4D v19.1)
Manual de linguagem 4D ( 4D v19.4)
Manual de linguagem 4D ( 4D v19.5)
Manual de linguagem 4D ( 4D v19.6)
Manual de linguagem 4D ( 4D v19.7)
Manual de linguagem 4D ( 4D v19.8)