Оператор CHANGE
Оператор CHANGE создает действие, которое изменяет свойство.
Синтаксис
[CHANGE] propertyId(expr1, ..., exprN) <- valueExpr [WHERE whereExpr]
Описание
Оператор CHANGE создает действие, которое записывает значение valueExpr в свойство при аргументах expr1, ..., exprN для каждого набора аргументов, для которого whereExpr не равно NULL. Список аргументов может вводить новые локальные параметры; такие параметры соответствуют перебираемым объектам и не являются параметрами создаваемого действия.
Параметры
-
propertyIdИдентификатор свойства, значение которого изменяется. Свойство должно быть изменяемым.
-
expr1, ..., exprNСписок выражений или типизированных параметров, задающих аргументы изменяемого свойства. При использовании типизированных параметров можно обращаться как к уже объявленным параметрам, так и объявлять новые локальные параметры; при использовании выражений добавлять новые локальные параметры нельзя. Количество элементов в этом списке должно совпадать с количеством параметров изменяемого свойства.
-
valueExprВыражение, значение которого записывается в свойство.
-
whereExprВыражение, значение которого является условием, при котором значение записывается. Если не задано, считается равным
TRUE.
Примеры
// установить всем клиентам у кого сумма заказа больше 100 скидку в размере 15 процентов
CLASS Customer;
discount = DATA NUMERIC[5,2] (Customer);
totalOrders = DATA NUMERIC[14,2] (Customer);
setDiscount {
discount(Customer c) <- 15 WHERE totalOrders(c) > 100;
}
CLASS Item;
discount = DATA NUMERIC[5,2] (Customer, Item);
in = DATA BOOLEAN (Item);
// изменить скидку для выбранных товаров для клиента
setDiscount (Customer c) {
discount(c, Item i) <- 15 WHERE in(i);
}
// скопировать свойство g в свойство f
f = DATA INTEGER (INTEGER);
g = DATA INTEGER (INTEGER);
copyFG {
f(a) <- g(a);
}