Оператор {...}
Оператор {...} - создание действия, выполняющего последовательность других действий.
Синтаксис
{
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);
}