Saltar al contenido principal
Versión: v19

Collection

Las colecciones son listas ordenadas de valores de tipos similares o diferentes (texto, número, fecha, objeto, booleano, colección o null).

Para manipular las variables de tipo Colección, debe utilizar la notación objeto (ver Sintaxis-básica).

Para acceder a un elemento de la colección, hay que pasar el número del elemento entre corchetes:

collectionRef[expression]

Puede pasar toda expresión 4D válida que devuelva un entero positivo en expresión. Ejemplos:

 myCollection[5]  //acceso al 6º elemento de la colección
myCollection[$var]

Atención: los elementos de la colección están numerados desde 0.

Puede asignar un valor a un elemento de la colección u obtener el valor de un elemento de colección:

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

Si se asigna un índice de elemento que sobrepasa el último elemento existente de la colección, la colección se redimensiona automáticamente y a todos los nuevos elementos intermedios se les asigna un valor nulo:

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

Inicialización

Las colecciones deben haber sido inicializadas, por ejemplo utilizando el comando New collection, de lo contrario al intentar leer o modificar sus elementos se generará un error de sintaxis.

Ejemplo:

 var $colVar : Collection //creación de una variable 4D de tipo colección
$colVar:=New collection //inicialización de la colección y asignación a la variable 4D

Colección estándar o compartida

Puede crear dos tipos de colecciones:

  • colecciones estándar (no compartidas), utilizando el comando New collection. Estas colecciones pueden ser editadas sin ningún control de acceso específico, pero no pueden ser compartidas entre procesos.
  • colecciones compartidas, utilizando el comando New shared collection. Estas colecciones pueden ser compartidas entre procesos, incluidos los hilos apropiativos. Estas colecciones pueden ser compartidas entre procesos, incluidos los hilos apropiativos.

Para más información, consulte la sección Objetos y colecciones compartidos.

Funciones de colección

Las referencias a colecciones 4D se benefician de funciones de clase específicas (a veces llamados funciones métodos). Las funciones de colección se listan en la sección Class API Reference.

Por ejemplo:

$newCol:=$col.copy() //copia de $col a $newCol
$col.push(10;100) //añade de 10 y 100 a la colección

Ciertas funciones devuelven la colección original después de la modificación, para que pueda ejecutar las llamadas en una secuencia:

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

parámetro rutaPropiedad

Varias funciones aceptan una propertyPath como parámetro. Este parámetro significa:

  • o bien un nombre de propiedad del objeto, por ejemplo "apellido"
  • o una ruta de propiedades del objeto, es decir, una secuencia jerárquica de subpropiedades vinculadas con caracteres de punto, por ejemplo "empleado.hijos.nombre".

Atención: cuando se utilizan funciones y parámetros propertyPath, no se puede utilizar ".", "[ ]", o espacios en los nombres de las propiedades ya que impedirá que 4D analice correctamente la ruta:

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