Оператор MULTI
Оператор MULTI
- создание свойства, реализующего выбор одного из значений (полиморфная форма).
Синтаксис
MULTI expr1, ..., exprN [exclusionType]
Описание
Оператор MULTI
создает свойство, значением которого будет значение одного из указанных в операторе свойств. Условием выбора свойства является принадлежность параметров сигнатуре этого свойства.
Параметры
-
expr1, ..., exprN
Список выражений, определяющих свойства, из которых будет производиться выбор.
-
exclusionType
Тип взаимоисключения. Определяет, могут ли несколько условий выбора свойства одновременно выполняться при некотором наборе параметров. Задается одним из ключевых слов:
EXCLUSIVE
OVERRIDE
Тип
EXCLUSIVE
указывает на то, что условия выбора свойства не могут одновременно выполняться. ТипOVERRIDE
допускает несколько одновременно выполняющихся условий, в этом случае будет выбрано первое в списке свойство с выполняющимся условием выбора.Тип
EXCLUSIVE
используется по умолчанию.
Примеры
nameMulti (Human h) = MULTI 'Male' IF h IS Male, 'Female' IF h IS Female;
CLASS Ledger;
CLASS InLedger : Ledger;
quantity = DATA INTEGER (InLedger);
CLASS OutLedger : Ledger;
quantity = DATA INTEGER (OutLedger);
signedQuantity (Ledger l) = MULTI quantity[InLedger](l), quantity[OutLedger](l);