Соответствие
Общее описание
Соответствие — это коллекция экземпляров типа КлючИЗначение<ТипКлюча,ТипЗначения>
. Порядок обхода элементов соответствует порядку добавления элементов в соответствие. Соответствие позволяет хранить элементы произвольных типов.
Соответствия могут быть неизменяемыми и изменяемыми:
- в неизменяемо м соответствии нельзя изменять, добавлять или удалять элементы. Тип для неизменяемого соответствия называется
ЧитаемоеСоответствие<ТипКлюча,ТипЗначения>
; - в изменяемом соответствии можно изменять, добавлять или удалять элементы. Тип для изменяемого соответствия называется
Соответствие<ТипКлюча,ТипЗначения>
.
Экземпляр КлючИЗначение<ТипКлюча,ТипЗначения>
Экземпляр КлючИЗначение<ТипКлюча,ТипЗначения>
два свойства: Ключ
и Значение
. В качестве некоторой аналогии можно представить ситуацию следующим образом: Ключ
— это имя переменной, которой присваивается Значение
. Однако аналогия является достаточно условной, т. к. в качестве имени переменной может выступать только строка символов определенного формата, а в качестве значен ия свойства Ключ
может выступать экземпляр любого типа.
Создание соответствия и заполнение значениями
Соответствие можно создать несколькими способами:
- с помощью конструктора пустого соответствия;
- с помощью литерала.
Данные инициализации заключаются в символы {}
. Сами данные инициализации состоят из пар «ключ-значение». Пары разделяются символом ,
. Значение ключа отделяется от собственно значения символом :
.
// Литерал пустого соответствия,
// в котором ключ типа Строка, а значение типа Число
пер КурсыВалют1 = <Строка, Число>{:}
// Литерал соответствия с элементами.
// Типы ключа и значения будут выведены из литерала.
пер КурсыВалют2 = {"Рубль РФ": 1, "Рубль Белоруссии": 31.01}
// Конструктор пустого соответствия и вставка элемента
КурсыВалют3 = новый Соответствие<Строка, Число>()
КурсыВалют3.Вставить("Рубль РФ", 1)
Если на момент создания соответствия неясно, какие данные в нем будут храниться, то добавить эти данные можно потом. В примере выше так делается с соответствиями КурсыВалют1
и К урсыВалют3
.
Если к моменту вставки элемента соответствие уже содержит значение с указанным ключом, то значение в соответствии будет заменено на значение, которое вставляется в рассматриваемом вызове. Другими словами, в результате исполнения следующего кода, в качестве значения элемента соответствия с ключом пи
будет значение 3.141592654
, а не просто 3
:
пер Значения: Соответствие<Строка, Число>
Значения.Вставить("пи", 3)
Значения.Встави ть("пи", 3.141592654)
Если необходимо создать копию какого-либо соответствия, то это можно сделать с помощью конструктора копирования. В этом случае новое соответствие будет являться полной копией исходного.
Соответствие также позволяет вставить какую-либо пару значений только в том случае, если этой пары еще нет в соответствии. Метод ВставитьЕслиОтсутствует()
создаст новый элемент в соответствии в том случае, если ключ, используемый в методе, отсутствует в соответствии. Если ключ в соответствии уже есть, то метод ВставитьЕслиОтсутствует()
не будет изменять существующую пару. При выполнении проверки анализируется только значение ключа.
Очистка соответствия выпол няется:
- либо методом
Очистить()
, при этом из соответствия удаляются все элементы; - либо с помощью метода
Удалить()
, который удаляет элемент к указанным ключом.
Элементы соответствия и работа с ними
Обращение к элементу соответствия может быть выполнено двумя способами:
С помощью операции доступа по индексу []
В этом случае в квадратных скобках указывается ключ, значение которого необходимо получить. Например, выражение Значения["пи"]
вернет значение, сохраненное в соответствии Значения
с ключом пи
. Если в данном со ответствии не существует элемента с ключом пи
, то будет вызвано исключение. Этот способ можно использовать как в правой, так и в левой части инструкции присваивания. В случае использования в левой части инструкции присваивания, такой способ работает аналогично методу Вставить()
.
Функциональный способ
В этом случае нужно использовать метод Получить()
, в качестве параметра которого выступает значение ключа. Обращение функциональным способом будет выглядеть следующим образом:
пер Элемент = Значения.Получить("пи")