Статус документа
Статус документа

ГОСТ Р ИСО 10303-11-2009 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS

     12.9 Инициализатор агрегированных структур


Инициализатор агрегированных структур используется, чтобы установить значение типа AGGREGATE OF GENERIC, которое может быть задано массиву, пакету, списку или набору. В квадратных скобках может быть не заключено ни одного или заключено несколько выражений, представляющих значения, принадлежащие к типу данных, совместимому с базисным типом данных агрегированной структуры. При наличии двух или более значений, они должны разделяться запятыми. Разреженный массив может быть инициализирован посредством использования неопределенности (?) вместо отсутствующих символов. Результатом выражения инициализатора агрегированной структуры является агрегированное значение, содержащее значения, определенные как его элементы. Число инициализированных элементов должно соответствовать границам, заданным для данного агрегированного типа данных.

Инициализатор агрегированной структуры, не содержащий ни одного элемента, устанавливает пустой пакет, список или набор (данная конструкция не может быть использована для инициализации пустых массивов).

   Синтаксис:

     169 aggregate_initializer = ' [ ' [ element { ' , ' element } ] ' ] ' .
     203 element = expression [ ' : ' repetition ] .
     287 repetition = numeric_expression .


Пример - Задано объявление:

a : SET OF INTEGER;
     
     его значение может быть задано следующим образом:
     
     а := [ 1, 3, 6, 9*8, -12 ]; -- 9*8 является выражением со значением 72


Если несколько последовательных значений является одинаковыми, то может быть использовано выражение повторения, которое представляется двумя выражениями, разделенными символом двоеточия (:). Выражение слева от двоеточия представляет значение, которое должно повторяться. Выражение справа от двоеточия задает число повторений левого значения. Данное выражение вычисляется один раз, перед инициализацией, и должно иметь неотрицательное целочисленное значение.

Пример - Задано следующее объявление:

а : BAG OF BOOLEAN ;
     
     Следующие два оператора эквивалентны:
     
     а := [ TRUE : 5 ];
     
     а := [ TRUE, TRUE, TRUE, TRUE, TRUE ];