Руководство разработчика

Неопределенный тип

Неопределенный тип данных - это тип данных, который используется во всех переменных с необъявленным явно типом. Этот тип данных может хранить любой тип данных. Вместо идентификатора типа данных используется символ *.

Синтаксис:

ПЕРЕМ *: <переменная>

Пример:

ПЕРЕМ *: в = 100

Имеется возможность использовать неопределенный тип с указаним базового типа. Если значение переменной не соотвествует базовому типу, то программа прекращает свое выполнение с ошибкой.

Синтаксис:

*(<базовый тип>)

Пример:

ТИП ПростейшийДиалог(ДИАЛОГ)
[
  СТРОКА: заголовок = "Пример";
  ЧИСЛО: ширина = 200;
  ЧИСЛО: высота = 200;

  КНОПКА: кнопка1 = [ левый = 10, 
                      верхний = 10,
                      ширина = 70,
                      высота = 30,
                      текст = "Кнопка 1" ];
]
ВЫЧИСЛИТЬ
  ПЕРЕМ *(ДИАЛОГ): в
  в = ПростейшийДиалог[]
  в.ПОКАЗАТЬ
КОНЕЦ

Компилятор проверяет соответствует ли тип переменой базовому типу или производному типу от базового класса. При соответствии переменной базовому типу или типу-наследнику от базового типа можно обращаться к наследуемым полям от базового типа и использовать методы базового типа.

Для сужения неопределенности при использовании * предоставляется возможность указать допустимые типы.

Синтаксис:

*<тип1>, [ <тип2>, [ … ] ]

Компилятор статически проверяет значения на совместимость с одним из указанных типов. Если переменная не соотвествует ни одному из перечисленных допустимых вариантов типов, то программа прекращает свое выполнение с ошибкой.

Пример:

ВЫЧИСЛИТЬ
  ПЕРЕМ *<ЧИСЛО, СТРОКА>: в = 01.01.2016
  ОТЛАДКА(в)
КОНЕЦ

Спецификация неопределенных типов может использоваться при формировании объявлений в модулях, что позволяет статически проверять соответствие документации.


См. также: