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

Операции со структурами (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