Операции со структурами (STRUCT, [])
Под структурами в платформе понимаются классы, объекты которых состоят из набора других объектов в фиксированном порядке. В платформе поддерживаются два оператора работы со структурами:
| Оператор | Название | Описание | Пример | Результат |
|---|---|---|---|---|
STRUCT | Создание | Создает свойство, принимающее список операндов на вход, возвращающее структуру, состоящую из переданных объектов | STRUCT('a', 1) | STRUCT('a', 1) |
[ ] | Обращение | Создает свойство, принимающее на вход операнд и фиксированное целое число, и возвращающее объект структуры, указанной в первом операнде, под номером, равным указанному целому числу | STRUCT('a',1)[2] | 1 |
Для структур поддерживаются операции сравнения, которые выполняются последовательно для каждого входящего в структуру объекта.
Структура существует, только когда существуют все её объекты: если какой-либо из них равен NULL, вся структура равна NULL, а оператор обращения возвращает NULL для NULL-структуры.
Определение класса результата
Класс результата определяется как:
| Оператор | Результат |
|---|---|
STRUCT | Структура из классов операндов в том же порядке |
[ ] | Класс объекта структуры в указанной позиции |
Язык
Для создания свойства, создающего структуру используется оператор STRUCT.
Для создания свойства, возвращающего объект из структуры используется оператор [ ].
Примеры
objectStruct(a, b) = STRUCT(a, f(b));
stringStruct() = STRUCT(1, 'two', 3.0);
CLASS Letter;
attachment1 = DATA FILE (Letter);
attachment2 = DATA FILE (Letter);
letterAttachments (Letter l) = STRUCT(attachment1(l), attachment2(l));
secondAttachment(Letter l) = letterAttachments(l)[2]; // возвращает attachment2