Перейти к основному содержимому
Версия: 4.x

Оператор {...}

Оператор {...} - создание действия, выполняющего последовательность других действий.

Синтаксис

{
operator1
...
operatorN
}

Операторы могут быть двух видов:

actionOperator
LOCAL [NESTED] name1, ..., nameN = returnClass (paramClass1, ..., paramClassN)

Описание

Последовательность операторов-действий и операторов LOCAL, заключенных в фигурные скобки, создает новое действие, выполнение которого - это последовательное выполнение перечисленных действий и создание локальных свойств. Область видимости созданных внутри оператора {...} локальных свойств заканчивается в конце этого оператора.

Параметры

  • actionOperator

    Контекстно-зависимый оператор-действие. После каждого оператора должна идти точка с запятой, за исключением операторов, заканчивающихся закрывающей фигурной скобкой. Лишние точки с запятой не являются ошибкой.

  • NESTED

    Ключевое слово, при указании которого локальное свойство будет помечено как вложенное, то есть все его изменения будут видны в новых сессиях, а при закрытии этих сессий, изменения этого свойства попадут в текущую сессию. Отметим, что такое поведение аналогично поведению обычного локального свойства (не NESTED) при использовании оператора NEWSESSION с указанным ключевым словом NESTED LOCAL (или просто NESTED, если это локальное свойство явно указано в списке свойств)

  • name1, ..., nameN

    Список имен создаваемых локальных свойств. Имена задаются простыми идентификаторами.

  • returnClass

    Идентификатор класса возвращаемого значения локального свойства.

  • argumentClass1, ..., argumentClassN

    Список идентификаторов классов аргументов локального свойства.

Примеры

CLASS Currency;
name = DATA STRING[30] (Currency);
code = DATA INTEGER (Currency);

CLASS Order;
currency = DATA Currency (Order);
customer = DATA STRING[100] (Order);
copy 'Копировать' (Order old) {
NEW new = Order { // создается действие, состоящее из последовательного выполнения двух действий
currency(new) <- currency(old); // точка с запятой указывается после каждого оператора
customer(new) <- customer(old);
} // в этой строке точка с запятой не ставится, потому что оператор заканчивается на }
}

loadDefaultCurrency(ISTRING[30] name, INTEGER code) {
NEW c = Currency {
name(c) <- name;
code(c) <- code;
}
}
run () {
loadDefaultCurrency('USD', 866);
loadDefaultCurrency('EUR', 1251);
}