Перейти к основному содержимому
Версия: 4.x

Оператор MULTI

Оператор MULTI - создание действия, реализующего ветвление (полиморфная форма).

Синтаксис

MULTI [exclusionType] action1, ..., actionN 

Описание

Оператор MULTI создает действие, которое выполняет одно из переданных ему действий в зависимости от выполнения условий выбора. Условием выбора свойства является принадлежность параметров сигнатуре этого действия.

Параметры

  • exclusionType

Тип взаимоисключения. Определяет, могут ли несколько условий выбора действия одновременно выполняться при некотором наборе наборе параметров. Задается одним из ключевых слов:

- `EXCLUSIVE`
- `OVERRIDE`

Тип EXCLUSIVE указывает на то, что условия выбора действия не могут одновременно выполняться. Тип OVERRIDE допускает несколько одновременно выполняющихся условий, в этом случае будет выбрано первое в списке действие с выполняющимся условием выбора.

Тип `EXCLUSIVE` используется по умолчанию.

Пример

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);