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