Переменные «mapping» сохраняют произвольные пары ключ-значение. Ключи и значения сохраняются в два массива: один для ключей и один для значений. Сопоставление с ключом: пара значения «one»: 1, «two»: 2, «three»: 3 выглядит следующим образом:
key | value |
«one» | 1 |
«two» | 2 |
«three» | 3 |
Поиск значений для ключей осуществляется с помощью ключей. Ключи могут быть произвольного типа, а типы могут быть смешанными (таким образом используется не только один тип). В случае необходимости поиска значения для ключа «one», осуществляется поиск позиции ключа «one» в ключевом массиве и возвращается значение в этой позиции массива значений.
ПРИМЕР
Следующий пример демонстрирует создание сопоставления, как это описано выше, а также адресацию к определенному значению.
main() { mapping m; m[«one»] = 1; m[«two»] = 2; m[«three»] = 3; DebugN(m[«one»]); //Выходное значение: 1 } |
ПРИМЕЧАНИЕ
Также можно использовать сопоставление или «dyn_string» внутри сопоставления.
ПРИМЕР
Следующий пример показывает, как использовать сопоставление и «dyn_string» внутри сопоставления.
main() { mapping root; mapping child_map; dyn_string child_dyn; child_map[«one»] = 1; child_map[«two»] = 2; child_map[«three»] = 3; child_dyn[1] = «one»; child_dyn[2] = «two»; child_dyn[3] = «three»; root[«c1»] = child_map; root[«c2»] = child_dyn; DebugN(«root =>child1 =>element2:» + root[«c1»][«two»]); //Выходное значение: 2 DebugN(«root =>child2 =>element1:» + root[«c2»][1]); //Выходное значение: один } |
Преимущества и недостатки сопоставления по сравнению с «dyn_string»
Преимущества
- быстрое время считывания при использовании большого количества записей
Недостатки
- длительное время записи
- необходим больший объем памяти
Функции сопоставления
mappingClear() | mappingGetKey() | mappingGetValue() |
mappingHasKey() | mappingKeys() | mappinglen() |
mappingRemove() |
Примеры функций сопоставления
ПРИМЕР 1
Доступ к сопоставлению с применением ключа.
int i; mapping m; m[«one»] = 1; //установка значения, равного 1 m[«two»] = 2; //установка значения, равного 2 DebugN(«The value of m[one]is=»+m[«one»], «the value should be=1»); DebugN(«The value of m[two]is=»+m[«two»], «the value should be=2»); i = m[«one»]; //установка i для значения «one» DebugN(«i is=»+i, «i should be =1»); |
ПРИМЕР 2
Вывод счетчика записей сопоставления с применением mappinglen().
DebugN(«mappinglen is» + mappinglen(m), «should be=2»); |
ПРИМЕР 3
Вывод всех ключевых значений сопоставления с применением mappingKeys().
DebugN(«mappingKeys are=»+mappingKeys(m), «should be one and two as string»); |
ПРИМЕР 4
Вывод ключевого значения определенного индекса в сопоставлении с применением mappingGetKey().
for(int i = 1; i <= mappinglen(m); i++) DebugN(«mappingGetKey», i, «is=» + mappingGetKey(m, i)); |
ПРИМЕР 5
Вывод значения определенного индекса в сопоставлении с применением mappingGetValue().
for(int i = 1; i <= mappinglen(m); i++) DebugN(«mappingGetValue», i, «is=» + mappingGetValue(m, i)); |
ПРИМЕР 6
Проверка наличия ключа сопоставления с применением mappingHasKey().
DebugN(«mappingHasKey one»,»is=» + mappingHasKey(m,»one»),»should be =TRUE»); |
ПРИМЕР 7
Удаление записи с применением mappingRemove().
DebugN(«mappingRemove: one», «is=»+mappingRemove(m, «one»), «should be =0»); |
dyn_mapping
«dyn_mapping» — это динамический список сопоставлений.
ПРИМЕР
Функция «getGroupsOfUserPVSS()» возвращает список сопоставлений (= «dyn_mapping«) с информационной группой выбранного пользователя. Пользователь «demo» располагается только в группе пользователей «guest» (гость), поэтому, в возвращаемой «dyn_mapping» содержится только сопоставление для этой группы.
main() { dyn_mapping m; m = getGroupsOfUserPVSS(4098); DebugN(«Groups of the user demo», m); } |