|
|
|
|
- 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
array asociativa (tipo Variable)
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.
aaFileSize is associative array of int
aaFileSize["File1.txt"] = fSize("File1.txt")
aaFileSize["File2.txt"] = fSize("File2.txt")
Trace(aaFileSize["File2.txt"])
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:
| | WithDuplicates | Esta constante se utiliza para permitir que los duplicados. Por Default, una array asociativa no puede contener ningún duplicado. | ccIgnoreAccent | Si el tipo de clave es una cadena (por Default), la indexación ignora los caracteres acentuados. | ccIgnoreCase | Si el tipo de clave es una cadena (por Default), la indexación no distingue entre mayúsculas y minúsculas. | ccIgnoreSpace | Si el tipo de clave es una cadena (por Default), la indexación ignora los caracteres espaciales. | ccIgnorePunctuationAndSpace | Si el tipo de clave es una cadena (por Default), la indexación no es sensible a la puntuación e ignora los caracteres espaciales. | 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. <Key type>: 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:
| | wlString | Cadena de caracteres | wlUnicodeString | Cadena Unicode | wlDate | salir con | wlDateTime | FechaHora | wlInt | Firmado un entero de 4 bytes | wlInt _8 | Firmado un entero de 8 bytes | wlUnsignedInt_4 | Un entero de 4 bytes sin firmar | wlUnsignedInt_8 | Un entero de 8 bytes sin firmar | wlTime | momento | wlCurrency | Moneda | wlNumeric | Numérico | wlReal | 8 bytes reales | El valor "*" permite conservar el tipo de clave predeterminada (string). <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. <Type>: Tipo de los elementos del array.
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 los elementos del array.
Observaciones Acceso a la arrays asociativa Las siguientes propiedades pueden ser utilizadas para manipular una asociación array: | | Conde | Devuelve el número de ocurrencias en la array. | Vacío | Permite saber si la array está vacía o no. |
Las sintaxis &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 | Devuelve True si el elemento MyKey existe, o False en el caso contrario. | Propiedad Vacío | 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 | 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. | | Crea la entrada en la array asociativa , con el valor Default especificado al declarar la array. | Acceso al elemento | Si el elemento MyKey no existe, devuelve el valor Default del array. Si existe el elemento MyKey, devuelve el valor del elemento. | | 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 | Se produce un error de WLanguage si el elemento MyKey no existe.. Si el elemento MyKey existe, devuelve la Address del elemento. | | 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. |
| | Array asociativo con duplicados | | Propiedad Exist | Devuelve True si existe al menos un elemento MyKey, False si el elemento MyKey no existe. | Verificación de la existencia de una clave: Propiedad Vacío | 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 | 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 | Sintaxis inválida que desencadena un WLanguage Error( porque varios elementos pueden corresponder a la misma clave). | | 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 | Sintaxis no permitida | | 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. |
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:
aaVATRate is associative array of real = ...
[["Normal", 0.2], ["Intermediate", 0.1], ["Low", 0.055]]
Navegar por 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 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:
PROCEDURE AddCustomer(aaCustomer is associative array of CCustomer,
sName is string,
sInfo is string)
c is CCustomer(sName, sInfo)
aaCustomer[sName] = c
- No se realiza ninguna verificación durante la compilación: las verificaciones 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:
clObj is cLMyClass
aaAssociative is associative array of cLMyClass
clObj:nMember = 0
aaAssociative["Association"] = clObj
clObj:nMember = 2
Info(aaAssociative["Association"]:nMember)
pclObj is dynamic cLMyClass
aaAssociative is associative array of dynamic cLMyClass
pclObj = new cLMyClass
pclObj:nMember = 0
aaAssociative["Association"] = pclObj
pclObj:nMember = 2
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".
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|