Неопределенный тип
Неопределенный тип данных - это тип данных, который используется во всех переменных с необъявленным явно типом. Этот тип данных может хранить любой тип данных. Вместо идентификатора типа данных используется символ *.
Синтаксис:
ПЕРЕМ *: <переменная>
Пример:
ПЕРЕМ *: в = 100
Имеется возможность использовать неопределенный тип с указаним базового типа. Если значение переменной не соотвествует базовому типу, то программа прекращает свое выполнение с ошибкой.
Синтаксис:
*(<базовый тип>)
Пример:
ТИП ПростейшийДиалог(ДИАЛОГ) [ СТРОКА: заголовок = "Пример"; ЧИСЛО: ширина = 200; ЧИСЛО: высота = 200; КНОПКА: кнопка1 = [ левый = 10, верхний = 10, ширина = 70, высота = 30, текст = "Кнопка 1" ]; ] ВЫЧИСЛИТЬ ПЕРЕМ *(ДИАЛОГ): в в = ПростейшийДиалог[] в.ПОКАЗАТЬ КОНЕЦ
Компилятор проверяет соответствует ли тип переменой базовому типу или производному типу от базового класса. При соответствии переменной базовому типу или типу-наследнику от базового типа можно обращаться к наследуемым полям от базового типа и использовать методы базового типа.
Для сужения неопределенности при использовании * предоставляется возможность указать допустимые типы.
Синтаксис:
*<тип1>, [ <тип2>, [ … ] ]
Компилятор статически проверяет значения на совместимость с одним из указанных типов. Если переменная не соотвествует ни одному из перечисленных допустимых вариантов типов, то программа прекращает свое выполнение с ошибкой.
Пример:
ВЫЧИСЛИТЬ ПЕРЕМ *<ЧИСЛО, СТРОКА>: в = 01.01.2016 ОТЛАДКА(в) КОНЕЦ
Спецификация неопределенных типов может использоваться при формировании объявлений в модулях, что позволяет статически проверять соответствие документации.