Обобщенные типы
Обобщенные типы можно рассматривать как универсальные шаблоны, параметризуемые типами. Обобщенные типы позволяют избежать жесткого определения используемых типов. Если данные и/или алгоритмы применяются для различных типов, использование обобщенных типов позволяет:
- избежать повторного написания программного кода;
- реализовывать более универсальные алгоритмы.
Синтаксис
Обобщенный тип имеет синтаксис:
имя-типа<имя-типа-параметра, ..., имя-типа-параметра>
Здесь:
- имя-типа — имя обобщенного типа;
- имя-типа-параметра — параметры обобщенного типа.
Параметры можно указывать в именованной форме:
имя-типа<имя-параметра1 = Тип1, ..., имя-параметраN = ТипN>
Например:
Соответствие<Число, ТипЗначения = Строка>
Ограничения:
- в именованной форме нельзя указать параметры функциональных типов;
- именованные параметры должны следовать строго за позиционными (при их наличии).
Представление типов, имеющих значения параметров по умолчанию, в сообщениях «1С:Шины».
При форматировании представления обобщенного типа в сообщениях «1С:Шины» (диагностиках и т. д.) все параметры типа, имеющие значения по умолчанию, опускаются, если их значения совпадают со значением по умолчанию.
Возможные ограничения на типы-параметры
На типы-параметры некоторых обобщенных типов могут накладываться ограничения. Всего есть два типа ограничений:
- ограничение на иерархию — тип-специализация должен иметь определенный базовый тип;
- ограничение на наличие значения по умолчанию — тип-специализация должен иметь значение по умолчанию.
При попытке объявить тип с неподходящим типом-параметром возникает ошибка компиляции.
Raw-типы
Это обобщенные типы без спецификации параметров типа. Поддерживаются два варианта синтаксиса:
-
имя-типа
-
имя-типа<имя-типа-параметра, ..., имя-типа-параметра>
Здесь хотя бы один из параметров типа — это
неизвестно
.
Переменной типа имя-типа<имя-типа-параметра>
можно присвоить значение типа имя-типа<неизвестно>
и наоборот, например:
пер Arr_str = новый Массив<Строка>()
пер Arr_any: Массив<неизвестно> = Arr_str // Это допустимо