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