AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Sintaxis WLanguage / Declaración de variables
  • Acceso a la arrays asociativa
  • Acceder a los elementos de la arrays asociativa
  • ¿Cómo se puede iniciar una array asociativa tan pronto como se declara?
  • Navegar por la arrays asociativa
  • Funciones WLanguage y arrays
  • Parámetros asociativos de Array
  • array asociativa de clases o estructuras
  • array asociativa de arrays, cola, pila, lista
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Un array asociativo es un tipo "avanzado" de array: permite agrupar una serie de elementos del mismo tipo. Cada elemento del array está indexado en cualquier tipo de información (y no solo en un índice numérico, como en otros tipos de arrays).
Observación: Este tipo de array le permite acceder rápidamente a cualquier elemento, con algunas opciones en las cuerdas.
Ejemplo
// Fills an associative array with the sizes of files
aaFileSize is associative array of int
aaFileSize["File1.txt"] = fSize("File1.txt")
aaFileSize["File2.txt"] = fSize("File2.txt")
 
// Retrieves the size of a file
Trace(aaFileSize["File2.txt"])
 
// Iterates over file sizes
sFile is string
nSize is int
FOR EACH ELEMENT nSize,sFile OF aaFileSize
Trace(StringBuild("%1: %2", sFile, nSize))
END
Sintaxis

Declarando una asociación array Ocultar los detalles

<Array name> is associative array [(<Options> [, <Default value> [, <Key type> [, <Initial size>]]])] of <Type>
<Array name>:
Nombre de la array Variable a declarar.
<Options>:
Combinación de constantes utilizadas para configurar el modo de funcionamiento de la array:
WithDuplicatesEsta constante se utiliza para permitir que los duplicados. Por Default, una array asociativa no puede contener ningún duplicado.
ccIgnoreAccentSi el tipo de clave es una cadena (por Default), la indexación ignora los caracteres acentuados.
WEBDEV - Código Navegador Esta constante no está disponible.
ccIgnoreCaseSi el tipo de clave es una cadena (por Default), la indexación no distingue entre mayúsculas y minúsculas.
ccIgnoreSpaceSi el tipo de clave es una cadena (por Default), la indexación ignora los caracteres espaciales.
ccIgnorePunctuationAndSpaceSi el tipo de clave es una cadena (por Default), la indexación no es sensible a la puntuación e ignora los caracteres espaciales.
WEBDEV - Código Navegador Esta constante no está disponible.
WithoutDuplicates ( Default )Por Default, una array asociativa no puede contener ningún duplicado.
Puede dejar esta constante sin especificar.
El valor "*" permite conservar el valor predeterminado de la opción.
<Default value>:
Valor devuelto al acceder a un elemento inexistente en una array asociativa sin duplicado. Este parámetro es ignorado en una array asociativa con duplicados. Por defecto, se utiliza el valor predeterminado del tipo de array (0, "", False).
El valor "*" permite conservar el valor predeterminado del tipo.
<Type of key>:
Tipo de clave utilizada para navegar por la array. Por Default, la operación de búsqueda se realiza en una tecla de cadena. Los tipos autorizados son los siguientes:
wlStringCadena de caracteres
wlUnicodeStringCadena Unicode
wlDatesalir con
wlDateTimeFechaHora
wlIntFirmado un entero de 4 bytes
wlInt _8Firmado un entero de 8 bytes
wlUnsignedInt_4Unsigned 4-byte integer
wlUnsignedInt_8Un entero de 8 bytes sin firmar
wlTimemomento
wlCurrencyMoneda
wlNumericNumeric
wlReal8 bytes reales
El valor "*" permite conservar el tipo de clave predeterminada (string).
WEBDEV - Código Navegador Este parámetro no está disponible.
<Initial size>:
Integro. Corresponde al tamaño inicial de la zona de memoria para la array asociativa.
La adición en una array asociativa puede ser bastante larga si la array se redimensiona. En caso de adiciones múltiples, le recomendamos que sobredimensione el array para optimizar las adiciones.
El valor "*" permite conservar el tamaño predeterminado.
WEBDEV - Código Navegador Este parámetro no está disponible.
<Type>:
Tipo de elementos que se encuentran en la array.
WINDEVWEBDEV - Código ServidorWindowsLinuxUniversal Windows 10 AppiPhone/iPadIOS WidgetApple WatchMac Catalyst Observación: Los elementos que componen la array también pueden ser arrays, arrays fijo, arrays asociativo, colas, pilas o listas..

Declarando un parámetro asociativo de array Ocultar los detalles

<Parameter name> is associative array of <Type>
<Parameter name>:
Nombre de la array Variable a declarar.
<Type>:
Tipo de elementos que se encuentran en la array.
WINDEVWEBDEV - Código ServidorWindowsLinuxUniversal Windows 10 AppiPhone/iPadIOS WidgetApple WatchMac Catalyst Observación: Los elementos que componen la array también pueden ser arrays, arrays fijo, arrays asociativo, colas, pilas o listas..
Observaciones

Acceso a la arrays asociativa

Las siguientes propiedades pueden ser utilizadas para manipular una asociación array:
CondeDevuelve el número de ocurrencias en la array.
VacíoPermite saber si la array está vacía o no.
Las sintaxis como &Array y Array1 = Array2 no están permitidas. La asociación arrays no permite a los operadores de la reference ni la copia.

Acceder a los elementos de la arrays asociativa

El acceso a los elementos que se encuentran en una array asociativa difiere dependiendo de si la array asociativa acepta duplicados o no.
Array asociativo sin duplicados
Propiedad Exist
MyArray[MyKey]..Exist

Devuelve True si el elemento MyKey existe, o False en el caso contrario.
AndroidWidget Android Propiedad no disponible.
Propiedad Vacío
MyArray[MyKey]..Empty

Devuelve True si el elemento MyKey no existe, o False en el caso contrario.
Propiedad Conde
MyArray[MyKey]..Occurence

Devuelve 1 si el elemento MyKey existe, 0 si el elemento no existe.
Asignación de un elemento
MyArray[MyKey] = <Value>

Si el elemento MyKey no existe, se crea un elemento MyKey y se asigna con .
Si existe el elemento MyKey, se modifica su valor.
MyArray[MyKey, Index] = Value

Se produce un error de WLanguage si el índice es diferente de 1.
Se produce un error de WLanguage si el elemento MyKey no existe..
Si existe el elemento MyKey, se modifica su valor.

Sintaxis compatible con la arrays asociativa con duplicados.
MyArray[MyKey]++

Crea la entrada en la array asociativa , con el valor Default especificado al declarar la array.
Acceso al elemento
MyArray[MyKey]

Si el elemento MyKey no existe, devuelve el valor Default del array.
Si existe el elemento MyKey, devuelve el valor del elemento.
MyArray[MyKey, Index]

Se produce un error de WLanguage si el índice es diferente de 1.
Se produce un error de WLanguage si el elemento MyKey no existe..
Si el elemento MyKey existe, devuelve el valor del elemento.

Sintaxis compatible con la arrays asociativa con duplicados.
Address del elemento
&MyArray[MyKey]

Se produce un error de WLanguage si el elemento MyKey no existe..
Si el elemento MyKey existe, devuelve la Address del elemento.
WEBDEV - Código Navegador Esta sintaxis no está disponible.
&MyArray[MyKey, Index]

Se produce un error de WLanguage si el índice es diferente de 1.
Se produce un error de WLanguage si el elemento MyKey no existe..
Si el elemento MyKey existe, devuelve la Address del elemento.

Sintaxis compatible con la arrays asociativa con duplicados.
WEBDEV - Código Navegador Esta sintaxis no está disponible.
Array asociativo con duplicados
Propiedad Exist
MyArray[MyKey]..Exist

Devuelve True si existe al menos un elemento MyKey, False si el elemento MyKey no existe.
AndroidWidget Android Propiedad no disponible.
Verificación de la existencia de una clave: Propiedad Vacío
MyArray[MyKey]..Empty

Devuelve True si el elemento MyKey no existe, False si existe al menos un elemento MyKey.
Número de elementos encontrados en una clave: Propiedad Conde
MyArray[MyKey]..Occurence

Devuelve el número de elementos MyKey.
Asignación de un elemento
MyArray[MyKey] = <Value>

Crea un elemento MyKey y asigna el valor especificado a este elemento (incluso si los elementos MyKey ya existen).
MyArray[MyKey, Index] = Value

Se produce un error de WLanguage si el índice es mayor que el número de elementos existentes.
Se produce un error de WLanguage si el elemento MyKey no existe..
Si el elemento MyKey existe, se modifica el valor del elemento identificado por su índice.
Acceso al elemento
MyArray[MyKey]

Sintaxis inválida que desencadena un WLanguage Error( porque varios elementos pueden corresponder a la misma clave).
MyArray[MyKey, Index]

Se produce un error de WLanguage si el índice es mayor que el número de elementos existentes.
Se produce un error de WLanguage si el elemento MyKey no existe..
Si el elemento MyKey existe, devuelve el valor del elemento identificado por su índice.
Address del elemento
&MyArray[MyKey]

Sintaxis no permitida
&MyArray[MyKey, Index]

Se produce un error de WLanguage si el índice es mayor que el número de elementos existentes.
Se produce un error de WLanguage si el elemento MyKey no existe..
Si el elemento MyKey existe, devuelve la Address del elemento identificado por su índice.
WEBDEV - Código Navegador Esta sintaxis no está disponible.

Tiene la posibilidad de utilizar la asignación múltiple para el asociativo arrays.

¿Cómo se puede iniciar una array asociativa tan pronto como se declara?

Para inicializar una array asociativa nada más declararla, basta con añadir las parejas "clave/valor" utilizando el operador [ ] (corchetes). La sintaxis es la siguiente:
aaMyArray is associative array of xxx = ...
[ [<key1>, <value1>], [<key2>, <value2>], ... ]

Por ejemplo:
// Stores the VAT rates by name
aaVATRate is associative array of real = ...
[["Normal", 0.2], ["Intermediate", 0.1], ["Low", 0.055]]

Navegar por la arrays asociativa

Los elementos de una array asociativa pueden consultarse mediante la sintaxis FOR EACH específica de la arrays asociativa.

Funciones WLanguage y arrays

Se pueden utilizar varias funciones de WLanguage para manipular la asociativa arrays. Para obtener más información, consulte Funciones de gestión de arrays.
Esto permite eliminar un elemento de una array asociativa utilizando suprimir (o ArrayDelete) mediante la siguiente sintaxis:
Delete(ArrayName, key)
ArrayDelete(ArrayName, Key)

Parámetros asociativos de Array

  • El tipo de los elementos que se encuentran en la array asociativa pasada como parámetro debe ser el mismo que el tipo de la declaración.
  • Una array asociativa no puede ser pasada por valor. Una Variable debe pasar necesariamente como parámetro.
    Ejemplo:
    // Adds a customer into the array
    PROCÉDURE AddCustomer(aaCustomer is associative array of CCustomer,
    sName is string,
    sInfo is string)
    // Builds the new customer object
    c is CCustomer(sName, sInfo)
    // Adds the new object into the array
    aaCustomer[sName] = c
  • No se realiza ninguna verificación durante la compilación: Los controles se realizan en tiempo de ejecución.
  • La asociación arrays no permite a los operadores de la reference ni la copia.

array asociativa de clases o estructuras

Si se utiliza una array asociativa de clases o estructuras, las diferentes instancias se copian automáticamente durante las adiciones.
Si está utilizando un array asociativo de clases dinámicas o estructuras dinámicas , las clases o las estructuras deben asignarse durante la adición (las operaciones de liberación se realizan automáticamente).
Ejemplos:
// Case of an array of non-dynamic objects
// Object
clObj is cLMyClass
// Associative array of objects
aaAssociative is associative array of cLMyClass
// Assign one of the object members
clObj:nMember = 0
// Add into the associative array.
// It is an array of non-dynamic objects, therefore the object is copied
// The assignment can be quite "long" if there are a lot of members
aaAssociative["Association"] = clObj
// Change in the initial object
clObj:nMember = 2
// The object was copied, therefore 0 is found in the array
// (value during the assignment)
Info(aaAssociative["Association"]:nMember)
// Case of an array of dynamic objects
// Dynamic object
pclObj is dynamic cLMyClass
// Associative array of dynamic objects
aaAssociative is associative array of dynamic cLMyClass
// Allocate a dynamic object
pclObj = new cLMyClass
// Assign one of the object members
pclObj:nMember = 0
// Add into the associative array.
// It is an array of dynamic objects.
// Therefore, it is a new "pointer" to the same object (fast assignment)
aaAssociative["Association"] = pclObj
// Change in the initial object
pclObj:nMember = 2
// The array contains the same object therefore 2 in the array as well
Info(aaAssociative["Association"]:nMember)
El acceso a los miembros de un elemento inexistente en una array asociativa de estructuras o clases no crea automáticamente la instancia de la estructura o clase.
La Line del código:
MyAssociativeArray["Key"]:Member = 5
falla si no se ha creado previamente el elemento "Clave".
WINDEVWEBDEV - Código ServidorWindowsLinuxUniversal Windows 10 AppiPhone/iPadIOS WidgetApple WatchMac Catalyst

array asociativa de arrays, cola, pila, lista

Se soportan las siguientes sintaxis:
<variable> is associative array of arrays of int
<variable> is associative array (withDuplicates) of arrays of int
<variable> is associative array (withDuplicates,wlInt) of arrays of int
<variable> is associative array of arrays of 5 int
<variable> is associative array (withDuplicates) of arrays of 5 int
<variable> is associative array (withDuplicates,wlInt) of arrays of 5 integers

<variable> is associative array of fixed arrays of 5 int
<variable> is associative array (withDuplicates) of  fixed arrays of 5 int
<variable> is associative array (withDuplicates,wlInt) of fixed arrays of 5 int
<variable> is associative array of associative arrays of int
<variable> is associative array (withDuplicates) of associative arrays of int
<variable> is associative array (withDuplicates,wlInt) of associative arrays of int

<variable> is associative array of associative arrays (withDuplicates) of int
<variable> is associative array (withDuplicates) of associative arrays ...
(withDuplicates) of int
<variable> is associative array (withDuplicates,wlInt) of associative arrays ...
(withDuplicates) of int
<variable> is associative array of associative arrays ...
(withDuplicates,wlInt) of int
<variable> is associative array (withDuplicates) of associative arrays ...
(withDuplicates,wlInt) of int
<variable> is associative array (withDuplicates,wlInt) of associative arrays ...
(withDuplicates,wlInt) of int

<variable> is associative array of queue of int
<variable> is associative array (withDuplicates) of queue of int
<variable> is associative array (withDuplicates,wlInt) of queue of int

<variable> is associative array of lists of int
<variable> is associative array (withDuplicates) of stacks of integers
<variable> is associative array (withDuplicates,wlInt) of stacks of integers

<variable> is associative array of lists of int
<variable> is associative array (withDuplicates) of lists of int
<variable> is associative array (withDuplicates,wlInt) of lists of int
Ejemplo: La asociación array de arrays de cuerdas:
// Declaration
arrClasses is associative array of array <growth> of strings
 
// Inserts an element into the associative array
Insert(arrClasses, "CM2")
 
// Fill the CM2 student
arrClasses["CM2"][1] = "ALARD Stephen"
arrClasses["CM2"][2] = "BERTAU Kevin"
 
// Inserts an element into the associative array
Insert(arrClasses, "CM1")
 
// Fill the CM1 student
arrClasses["CM1"][1] = "ALONSO Bernie"
arrClasses["CM1"][2] = "CRISTO Benjie"
 
FOR EACH AClass, sName of arrClasses
FOR EACH Student OF AClass
Trace(sName + ":" + Student)
END
END
Versión mínima requerida
  • Versión 11
Esta página también está disponible para…
Comentarios
Also called a dictionary
An associative Array is also know as a dictionary, for example in Python.
Sebastian
02 06 2015

Última modificación: 24/06/2023

Señalar un error o enviar una sugerencia | Ayuda local