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

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