Оператор MULTI
Оператор MULTI
- создание действия, реализующего ветвление (полиморфная форма).
Синтаксис
MULTI [exclusionType] action1, ..., actionN
Описание
Оператор MULTI
создает действие, которое выполняет одно из переданных ему действий в зависимости от выполнения условий выбора. Условием выбора свойства является принадлежность параметров сигнатуре этого действия.
Параметры
exclusionType
Тип взаимоисключения. Определяет, могут ли несколько условий выбора действия одновременно выполняться пр и некотором наборе наборе параметров. Задается одним из ключевых слов:
- `EXCLUSIVE`
- `OVERRIDE`
Тип EXCLUSIVE
указывает на то, что условия выбора действия не могут одновременно выполняться. Тип OVERRIDE
допускает несколько одновременно выполняющихся условий, в этом случае будет выбрано первое в списке действие с выполняющимся условием выбора.
Тип `EXCLUSIVE` используется по умолчанию.
-
action1, ..., actionN
Список контекстно-зависимых операторов-действий, описывающих действия, из которых будет производиться выбор.
Пример
CLASS Shape;
CLASS Square : Shape;
CLASS Circle : Shape;
message (Square s) { MESSAGE 'Square'; }
message (Circle c) { MESSAGE 'Circle'; }
message (Shape s) = MULTI message[Square](s), message[Circle](s);