Ключевое слово ТИП
1. Объявление объектного типа.
Для объявления объектных типов ключевое слово ТИП используется вне объявления типа и тела функции или метода.
Синтаксис:
ТИП <имя типа> [( [ <имя родительского типа> ] [,] [<список базовых интерфейсов>])] [ <объявления полей и методов> ]
В круглых скобках после имени типа могут указываться имена базовых типов, разделенные запятыми. Порядок имен базовых типов значения не играет. В списке базовых типов допускается указание не более одного объектного типа, который называется родительским типом. В списке может указываться произвольное количество имен интерфейсов без явных повторений. Объектный тип должен при этом реализовывать все методы всех своих базовых интерфейсов.
Пример:
ТИП МойДиалог(ДИАЛОГ) // родительский тип [ КНОПКА: кнопка1; // объявление поля ФУНКЦИЯ ЛОГИКА: Проверка; // объявление метода ]
2. Объявление синонима типа.
Для объявления синонима типа ключевое слово ТИП используется совместно со знаком "равно" вне объявления типа и тела функции или метода.
Синтаксис:
Объявление альтернативного имени типа:
ТИП <имя типа> = <другое имя типа>;
Задание имени для контейнерного типа:
ТИП <имя типа> = ИНДЕКС <тип элемента>: @[<список типов индексов>];
Задание имени для типа функции:
ТИП <имя типа> = ФУНКЦИЯ [<тип результата>:] @[<список параметров>];
Точка с запятой после объявления синонима обязательна.
Пример:
ТИП ТКодОшибки = ЦЕЛОЕ; ТИП ТипСловарь = ИНДЕКС СТРОКА: @[СТРОКА, ЦЕЛОЕ]; ТИП ТипОбработки = ФУНКЦИЯ ТКодОшибки: @(ПЕРЕМ ТипСловарь: словарь);
3. Явное использование типа.
Для явного использования типа совместно применяются ключевые слова ИСПОЛЬЗОВАТЬ и ТИП вне объявления типа и тела функции или метода.
Синтаксис:
ИСПОЛЬЗОВАТЬ ТИП <список имен типов>;
Имена в списке разделяются запятой. Точка с запятой после списка имен обязательна.
Пример:
ИСПОЛЬЗОВАТЬ ТИП ПрихНакл, РасхНакл;
4. Сравнение типов.
Для сравнения типов и проверки принадлежности иерархии ключевое слово ТИП используется в выражениях.
Синтаксис:
Сравнение на равенство типов:
<имя типа1> = <имя типа2> ТИП(<выражение1>) = ТИП(<выражение2>) ТИП(<выражение>) = <имя типа> <имя типа> = ТИП(<выражение>)
Сравнение на неравенство типов:
<имя типа1> <> <имя типа2> ТИП(<выражение1>) <> ТИП(<выражение2>) ТИП(<выражение>) <> <имя типа> <имя типа> <> ТИП(<выражение>)
Проверка принадлежности иерархии:
<имя типа1> РОДИТЕЛЬ <имя типа2> <имя типа1> НЕ РОДИТЕЛЬ <имя типа2> ТИП ( <выражение> ) РОДИТЕЛЬ <имя типа> <имя типа> РОДИТЕЛЬ ТИП ( <выражение> ) ТИП ( <выражение> ) НЕ РОДИТЕЛЬ <имя типа> <имя типа> НЕ РОДИТЕЛЬ ТИП ( <выражение> ) ТИП ( <выражение1> ) РОДИТЕЛЬ ТИП ( <выражение2> ) ТИП ( <выражение1> ) НЕ РОДИТЕЛЬ ТИП ( <выражение2> )
Результатом сравнения типов является значение логического типа.
Пример:
ФУНКЦИЯ ОбработатьСсылку(ПЕРЕМ ССЫЛКА: ссылка); ФУНКЦИЯ ОбработкаСсылок(ПЕРЕМ АЛГ_МАССИВ: массив) ЦИКЛ ИНДЕКС (знач = массив.парам[*]) ЕСЛИ ТИП(знач) = ССЫЛКА ТО // пропускаем элементы массива, которые не ссылки ОбработатьСсылку(знач) КОНЕЦ_ЕСЛИ КОНЕЦ_ЦИКЛА КОНЕЦ_ФУНКЦИИ
5. Проверка возможности изменения типа переменной.
При проверке переменной на возможность изменения типа ключевое слово ТИП используется в выражениях в паре с ключевым словом ЛЮБОЙ.
Синтаксис:
ЛЮБОЙ ТИП(<переменная>)
Результатом проверки является значение логического типа.