Оператор 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);