Оператор MULTI
Оператор MULTI создает действие, реализующее ветвление (полиморфная форма).
Синтаксис
MULTI [exclusionType] action1, ..., actionN
Описание
Оператор MULTI создает действие, которое выполняет одно из переданных ему действий в зависимости от выполнения условий выбора. Условием выбора для каждого действия является принадлежность параметров вызова сигнатуре этого действия; выполняется действие, для которого условие выбора выполнено.
Параметры
-
exclusionTypeТип взаимоисключения. Определяет, могут ли несколько условий выбора действия выполняться одновременно при некотором наборе параметров:
EXCLUSIVE- условия выбора действия не могут выполняться одновременно. Используется по умолчанию.OVERRIDE- несколько условий могут выполняться одновременно; в этом случае будет выбрано первое в списке действие с выполняющимся условием выбора.
-
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);