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