How-to: CASE/IF/OVERRIDE
Пример 1
Условие
Есть набор книг, которые могут быть белыми и черными.
CLASS Color 'Цвет' {
white 'Белый',
black 'Черный'
}
CLASS Book 'Книга';
color 'Цвет' = DATA Color (Book);
Нужно определить свойство, которое возвращает цвет книги.
Решение
// Вариант 1
nameColor1 'Цвет' (Book b) = staticCaption(color(b));
// Вариант 2
nameColor2 'Цвет' (Book b) = IF color(b) == Color.white THEN 'Белый' ELSE 'Черный';
В данном случае эти два варианта идентичны.
Пример 2
Условие
Есть заказы на книги поставщикам. Для каждого из них определено, был ли он отправлен поставщику, согласован и поставлен. В примере они введены как первичные сво йства, но в более сложных случаях они будут вычисляемыми.
CLASS Order 'Заказ';
sent 'Отправлен' = DATA BOOLEAN (Order);
agreed 'Согласован' = DATA BOOLEAN (Order);
accepted 'Принят' = DATA BOOLEAN (Order);
Необходимо определить статус заказа.