Инструкция =
Инструкция = - создание нового свойства.
Синтаксис
name [caption] [(param1, ..., paramN)] = expression [options];
name [caption] [(param1, ..., paramN)] = contextIndependentOperator [options];
name [caption] [(param1, ..., paramN)] = NATIVE returnClass (argClass1, ..., argClassM) [options];
Описание
Инструкция = объявляет новое свойство и добавляет его в текущий модуль.
При создании свойства инструкция имеет две основные формы:
- Первая форма описывает и создает свойство с помощью выражения.
- Вторая форма описывает свойство с помощью одного из контекстно-независимых операторов-свойств, которые не могут быть частью выражения.
Третья форма с ключевым словом NATIVE используется в некоторых системных модулях. Она предназначена для объявления отдельных системных свойств, которые создаются до инициализации модулей.
Также при объявлении свойства может задаваться набор его опций.
Параметры
-
nameИмя свойства. Простой идентификатор.
-
captionЗаголовок свойства. Строковый литерал. Если заголовок не задан, то заголовком свойства будет являться его имя.
-
param1, ..., paramNСписок параметров. Каждый из них задается типизированным параметром. Эти параметры далее могут быть использованы в выражении описывающем создаваемое свойство (а также в некоторых опциях).
Если параметры не заданы явно, то они будут автоматически вычислены при обработке выражения. Порядок параметров будет соответствовать порядку появления параметров в выражении. Рекомендуется явно задавать параметры свойства. Это позволит найти опечатки и другие ошибки в объявлении (например, несоответствие количества указанных параметров с количеством параметров созданного свойства).
-
expressionВыражение, описывающее и создающее свойство.
-
contextIndependentOperatorКонтексто-независимый оператор-свойство, описывающий и создающий свойство.
-
options -
returnClassИдентификатор класса возвращаемого значения свойства.
-
argClass1, ..., argClassMСписок идентификаторов классов аргументов свойства.
Примеры
// cвойство задано контекстно-независимым оператором-свойством DATA
cost 'Стоимость' (i) = DATA NUMERIC[12,3] (Item);
// cвойство задано выражением
weightedSum 'Взвешенная сумма' (a, b) = 2*a + 3*b;
// заголовком этого свойства будет 'diff', а параметрами - (a, b)
diff = a - b;
// свойство задано оператором DATA с указанием дополнительных опций свойства
teamName 'Название команды' = DATA BPSTRING[30](Team) IN baseGroup TABLE team;