Funciones de Diccionario y Matriz¶
Introducción¶
Las funciones de matriz y diccionario proporcionan estructuras de almacenamiento para la información en los secuencias de comandos. Consulte las Funciones relacionadas en el panel lateral para ver funciones adicionales que se pueden usar con arreglos.
Diferencia Entre Matrices y Diccionarios¶
Aunque son muy similares en muchos aspectos como método para almacenar información, las matrices y los diccionarios difieren en estas características importantes:
- Matrices
- Los elementos están ordenados
- Los elementos se recuperan por posición
- Diccionarios
- Los elementos se almacenan sin tener en cuenta el orden y no tienen un orden intrínseco
- Los elementos se recuperan mediante una clave
La sintaxis para configurar y recuperar un elemento es similar (ambos pueden usar la notación de corchetes), pero las matrices no tienen claves asociadas con los elementos y deben almacenar todos los elementos secuencialmente, sin espacios. Los diccionarios pueden ser escasos, con claves completadas solo según sea necesario.
Cuál usar depende de la naturaleza de la información. Los diccionarios se prestan a información que varía en la forma en que se recupera. Las matrices suelen ser mejores para conjuntos ordenados.
Configuración y Recuperación de Valores en Matrices y Diccionarios¶
// Example of an array
$org.lookup.currency = Array();
$org.lookup.currency[1]="USD";
$org.lookup.currency[2]="EUR";
// currency will be "USD"
currency = $org.lookup.currency[1];
// Example of a dictionary
$common.dictionary.message = Dict();
AddToDict($common.dictionary.message, 'OP_START', 'Start');
AddToDict($common.dictionary.message, 'OP_END', 'End');
AddToDict($common.dictionary.message, 'API_PARMS', 'API Parameters');
// message will be "API Parameters"
message = $common.dictionary.message['API_PARMS'];
Encontrar Valores en Diccionarios y Matrices¶
Para los diccionarios, el HasKey
la función le permite probar si una tecla está presente. Para una matriz, puede utilizar el FindValue
funcione de manera similar al pasar dos instancias de la matriz a la función:
arr = {1, 2, 3};
value = 1;
t = (FindValue(value, arr, arr) == value);
// t will be 1 (true)
value = 4;
t = (FindValue(value, arr, arr) == value);
// t will be 0 (false)
AddToDict
¶
Declaración¶
bool AddToDict(dictionary dict, string key, type arg)
Sintaxis¶
AddToDict(<dict>, <key>, <arg>)
Parámetros Requeridos¶
dict:
Un diccionario existentekey:
Clave a utilizar en el diccionarioarg:
Valor a colocar en esa tecla
Descripción¶
Agrega un valor a un diccionario para una clave específica.
La clave debe ser una cadena o tener una representación de cadena, no se permiten claves nulas. Se permite cualquier valor, incluso valores nulos.
Devoluciones true
si el valor se agregó y la nueva clave se agregó al diccionario o false
si la clave ya existía y el valor de esa clave se actualizó. Si el primer argumento no está definido o no es un diccionario, se inicializará en un diccionario vacío antes de agregar el valor.
Véase también el Dict()
función.
Ejemplos¶
// Initialize a dictionary prior to use
d = Dict();
// Adds a value to a dictionary "d" if a key doesn't already exist
If(!HasKey(d, "key"), AddToDict(d, "key", "value"));
// To directly assign a key-value, use this syntax:
d["key"] = "value";
`WARNING: Use of a null key will cause an error and stop the execution of an operation.
Array
¶
Declaración¶
array Array()
Sintaxis¶
Array()
Descripción¶
Crea una matriz vacía. Aunque no es necesario inicializar los arreglos antes de usarlos, este método se puede usar para ser explícito o para restablecer un arreglo ya existente. Las matrices están basadas en cero y los valores se recuperan mediante índices.
Ejemplos¶
// Create an empty array and set values
arr = Array();
arr[0] = "value1";
arr[1] = "value2";
// Create an array and set the first value directly:
arr2[0] = "value";
// Arrays can be created with { } syntax:
arr3 = {};
Collection
¶
Declaración¶
array Collection()
Sintaxis¶
Collection()
Descripción¶
un alias para Array
. Ver la función Array
.
CollectValues
¶
Declaración¶
array CollectValues(dictionary dict, array names)
Sintaxis¶
CollectValues(<dict>, <names>)
Parámetros Requeridos¶
dict:
Un diccionario existentenames:
Una matriz de claves para buscar en el diccionario
Descripción¶
Devuelve una matriz que contiene los valores correspondientes a los nombres de la matriz de argumentos, devueltos en el mismo orden que las claves de la matriz.
Ejemplos¶
// Retrieve a map from a source instance
map = GetSourceInstanceMap([Values$Value.]);
names = Array();
names[0] = "Attr1";
names[1] = "Attr2";
// Array containing the values of
// the attributes named in the names array
values = CollectValues(map, names);
Dict
¶
Declaración¶
dictionary Dict()
Sintaxis¶
Dict()
Descripción¶
Crea un diccionario vacío. Un diccionario es una colección de pares de nombre y valor donde el valor se recupera en función de un valor de clave de cadena. Se permite cualquier valor, incluso valores nulos. La clave debe ser una cadena o tener una representación de cadena. No se permiten claves nulas. Véase también el AddToDict()
función.
Advertencia
Los diccionarios deben inicializarse antes de usarse.
Advertencia
El uso de una clave nula provocará un error y detendrá la ejecución de una operación.
Ejemplos¶
// Creating a dictionary "myDictionary"
myDictionary = Dict();
// Assigning a value ("text") to the key "myKey"
myDictionary["myKey"] = "text";
// Using the AddToDict function instead
AddToDict(myDictionary, "myKey", "text");
GetKeys
¶
Declaración¶
array GetKeys(dictionary dict)
Sintaxis¶
GetKeys(<dict>)
Parámetros Requeridos¶
dict:
Un diccionario existente
Descripción¶
Devuelve una matriz de las claves de un diccionario. El argumento debe ser un diccionario existente.
Ejemplos¶
// Retrieving the keys from the dictionary "myDictionary"
// using GetKeys and then looping through the array
// to retrieve all the values in the dictionary
// and writing them to the Operation Log
keys = GetKeys(myDictionary);
i=0;
While(i < Length(keys),
WriteToOperationLog(myDictionary[keys[i]]);
i++;
);
GetSourceAttrNames
¶
Declaración¶
array GetSourceAttrNames(node n)
Sintaxis¶
GetSourceAttrNames(<n>)
Parámetros Requeridos¶
n:
Una expresión de ruta de referencia de cadena a un nodo en la transformación actual
Descripción¶
Devuelve una matriz que contiene los nombres de los atributos de un nodo, en el orden en que aparecen los atributos en el nodo.
Comparar con la función GetSourceInstanceMap
que devuelve un mapa de las claves (los atributos) y valores para un nodo.
Para entrar en un n
ruta en la función, haga doble clic en la carpeta del nodo XML deseado para insertar su ruta calificada en la ubicación de su cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodos XML.
Ejemplos¶
// Appends all the attributes together without having
// to explicitly reference their source data elements
map = GetSourceInstanceMap([Values$Value.]);
names = GetSourceAttrNames([Values$Value.]);
i = 0;
n = Length(names);
str = "";
While(i < n,
str = str + map[names[i]];
i++;
);
GetSourceElementNames
¶
Declaración¶
array GetSourceElementNames(node n)
Sintaxis¶
GetSourceElementNames(<n>)
Parámetros Requeridos¶
n:
Una expresión de ruta de referencia de cadena a un nodo en la transformación actual
Descripción¶
Devuelve una matriz que contiene los nombres de los subelementos simples de un nodo en el orden en que aparecen los atributos en el nodo.
Comparar con la función GetSourceInstanceElementMap
que devuelve un mapa de un nodo.
Para entrar en un n
ruta en la función, haga doble clic en la carpeta del nodo XML deseado para insertar su ruta calificada en la ubicación de su cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodos XML.
Ejemplos¶
// Appends all the attributes together without having
// to explicitly reference their source data elements
map = GetSourceInstanceElementMap([Values$Value.]);
names = GetSourceElementNames([Values$Value.]);
// The values as an array of values from the sub-elements
values = CollectValues(map, names);
GetSourceInstanceArray
¶
Declaración¶
array GetSourceInstanceArray(node n)
Sintaxis¶
GetSourceInstanceArray(<n>)
Parámetros Requeridos¶
n:
Una expresión de ruta de referencia de cadena a un nodo en la transformación actual
Descripción¶
Devuelve una matriz que contiene el valor del atributo de un nodo de elemento. El valor de la matriz se etiqueta con el nombre del atributo y se puede recuperar por su índice o por su nombre como en un elemento de datos de diccionario.
Como alternativa a esta función, véase GetSourceInstanceMap
.
Para entrar en un n
ruta en la función, haga doble clic en la carpeta del nodo XML deseado para insertar su ruta calificada en la ubicación de su cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodos XML.
Ejemplos¶
arr = GetSourceInstanceArray([Values$Value.]);
// To retrieve the value of the "Attr1" attribute:
// If "Attr1" is the first attribute name, you can use:
v = arr[0];
// Or, you can use the name "Attr1":
v = arr["Attr1"];
GetSourceInstanceElementArray
¶
Declaración¶
array GetSourceInstanceElementArray(node n)
Sintaxis¶
GetSourceInstanceElementArray(<n>)
Parámetros Requeridos¶
n
: Una expresión de ruta de referencia de cadena a un nodo en la transformación actual
Descripción¶
Devuelve una matriz que contiene el valor del subelemento de un nodo de elemento. El valor de la matriz se etiqueta con el nombre del subelemento y se puede recuperar por su índice o por su nombre como en el elemento de datos del diccionario.
Como alternativa a esta función, véase GetSourceInstanceElementMap
.
Para entrar en un n
ruta en la función, haga doble clic en la carpeta del nodo XML deseado para insertar su ruta calificada en la ubicación de su cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodos XML.
Ejemplos¶
arr = GetSourceInstanceElementMap([Values$Value.]);
// To retrieve the value of the "e1" sub-element:
// If "el" is the first sub-element, you can use:
v = arr[0];
// Or, you can use the name "e1":
v = arr["e1"];
GetSourceInstanceMap
¶
Declaración¶
dictionary GetSourceInstanceMap(node n)
Sintaxis¶
GetSourceInstanceMap(<n>)
Parámetros Requeridos¶
n:
Una expresión de ruta de referencia de cadena a un nodo en la transformación actual
Descripción¶
Devuelve un diccionario (mapa) que contiene el nombre del atributo y su valor de un nodo de elemento.
Como alternativa a esta función, consulte GetSourceInstanceArray
.
Para entrar en un n
ruta en la función, haga doble clic en la carpeta del nodo XML deseado para insertar su ruta calificada en la ubicación de su cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodos XML.
Ejemplos¶
map = GetSourceInstanceMap([Values$Value.]);
v = map["Attr1"];
// Returns the value of the "Attr1" attribute
GetSourceInstanceElementMap
¶
Declaración¶
dictionary GetSourceInstanceElementMap(node n)
Sintaxis¶
GetSourceInstanceElementMap(<n>)
Parámetros Requeridos¶
n:
Una expresión de ruta de referencia de cadena a un nodo en la transformación actual
Descripción¶
Devuelve un diccionario (mapa) que contiene el valor del subelemento de un nodo de elemento.
Como alternativa a esta función, consulte GetSourceInstanceElementArray
.
Para entrar en un n
ruta en la función, haga doble clic en la carpeta del nodo XML deseado para insertar su ruta calificada en la ubicación de su cursor. Para obtener más información, consulte las instrucciones sobre insertar rutas de nodos XML.
Ejemplos¶
map = GetSourceInstanceElementMap([Values$Value.]);
v = map["e1"];
// Returns the value of the "e1" sub-element
HasKey
¶
Declaración¶
bool HasKey(dictionary dict, string key)
Sintaxis¶
HasKey(<dict>, <key>)
Parámetros Requeridos¶
dict:
Un diccionario existentekey:
Una clave para consultar en el diccionario
Descripción¶
Comprueba si un diccionario contiene una clave específica. Devoluciones false
si el primer argumento no es un diccionario o si no se encontró la clave. Como una función equivalente que funciona para matrices, vea los ejemplos de la FindValue
función.
Ejemplos¶
// Update the value in a dictionary "myDictionary"
// only if the key already exists
If(HasKey(myDictionary, "key"),
myDictionary["key"] = "value");
Map
¶
Declaración¶
dictionary Map()
Sintaxis¶
Map()
Descripción¶
un alias para Dict
. Ver la función Dict
.
MapCache
¶
Declaración¶
string MapCache(dictionary dict, string key, string value)
Sintaxis¶
MapCache(<dict>, <key>, <value>)
Parámetros Requeridos¶
dict:
Un diccionario existentekey:
Una clave para consultar en el diccionariovalue:
Un valor para usar (y almacenar) si la clave no está en el diccionario
Descripción¶
Esta función almacena en caché un par clave/valor en un diccionario. Si la clave ya existe en el diccionario, se devolverá el valor correspondiente; de lo contrario, se evaluará el tercer argumento y ese valor se almacenará en el diccionario para la clave.
Ejemplos¶
// Creating a dictionary "myDictionary"
// and caching values in it,
// if they don't already exist
myDictionary = Dict();
i=0;
a=MapCache(myDictionary, "key1", ++i);
b=MapCache(myDictionary, "key2", ++i);
c=MapCache(myDictionary, "key1", ++i);
result = i;
// The result will be
// result=2, a=1, b=2, and c=1
// as c's value will be retrieved
// rather than incremented
ReduceDimension
¶
Declaración¶
array ReduceDimension(array arrayMultiD)
Sintaxis¶
ReduceDimension(<arrayMultiD>)
Parámetros Requeridos¶
arrayMultiD:
Una matriz multidimensional
Descripción¶
Dada una matriz multidimensional con n dimensiones, la función devuelve una matriz con n-1 dimensiones. La dimensión más baja de la matriz de entrada desaparecerá y sus miembros se recopilarán en la dimensión del siguiente nivel.
Ejemplos¶
prices = ReduceDimension(orders$company.order#.detail#.price);
// If orders$company.order#.detail#.price
// is a 2-dimensional source data element array,
// the function will return a one-dimensional array
a = {{"0_0", "0_1"}, {"1_0", "1_1"}};
result = ReduceDimension(a);
// result will be {0_0, 0_1, 1_0, 1_1}
RemoveKey
¶
Declaración¶
bool RemoveKey(dictionary dict, string key)
Sintaxis¶
RemoveKey(<dict>, <key>)
Parámetros Requeridos¶
dict:
Un diccionario existentekey:
Una clave para consultar en el diccionario
Descripción¶
Elimina un par clave-valor con una clave específica de un diccionario. La clave debe ser una cadena o tener una representación de cadena y no se permiten valores nulos. Devoluciones true
si el par clave-valor se eliminó y false
si la clave no existiera.
Ejemplos¶
// Removes a key-value pair if it
// exists in dictionary "myDictionary"
If(HasKey(myDictionary, "key"),
RemoveKey(myDictionary, "key"));
SortArray
¶
Declaración¶
void SortArray(array arrayToSort[, bool isAscending])
void SortArray(array arrayToSort, int index[, bool isAscending])
Sintaxis¶
SortArray(<arrayToSort>[, <isAscending>])
SortArray(<arrayToSort>, <index>[, <isAscending>])
Parámetros Requeridos¶
arrayToSort:
Una matriz para ordenarindex:
Para matrices multidimensionales, índice de la matriz que se ordenará (predeterminado 0)
Parámetros Opcionales¶
isAscending:
Si la matriz se ordenará en orden ascendente (predeterminado)
Descripción¶
Ordena una matriz por referencia. El valor devuelto no está definido y debe ignorarse.
En la primera forma, el segundo parámetro (opcional) especifica el orden de clasificación.
En la segunda forma, para arreglos multidimensionales, la función ordena el arreglo según un índice basado en cero especificado en el segundo parámetro (obligatorio). En la segunda forma, el tercer argumento (opcional) especifica el orden de clasificación.
El orden de clasificación predeterminado es ascendente en ambas formas.
Después de que la función regrese, la matriz se ordenará en el lugar. Si se especifica, se ordenará según el índice.
La ordenación múltiple de la misma matriz es posible aplicando el SortArray
función repetidamente.
Ejemplos¶
// Sorting a one-dimensional array
arr1 = {"Carol", "Bob", "Alice"};
SortArray(arr1);
// arr1 is now {Alice, Bob, Carol}
// Sorting a two-dimensional array
arr2 = {{"a", 20, 1}, {"bc", 7, 12}, {"x", 20, 13}, {"d", 5, 4}};
// Sort arr2, order by third column, descending
SortArray(arr2, 2, false);
// arr2 is now {{x, 20, 13}, {bc, 7, 12}, {d, 5, 4}, {a, 20, 1}}
// Sort arr2, order by second column, ascending
SortArray(arr2, 1);
// arr2 is now {{d, 5, 4}, {bc, 7, 12}, {x, 20, 13}, {a, 20, 1}