Поделиться через


Определение параметров данных Configuration-Dependent

Параметры задаются с помощью конструкции *Features . Тег конструкции *Features определяет параметр (или определяет имя параметра, которое также называется именем компонента).

Содержимое конструкции *Features может состоять из одной или нескольких конструкций *Option . Конструкции *Option определяют допустимые значения или состояния, в которые может находиться параметр. Тег конструкции *Option определяет допустимое значение или состояние. Этот тег конструктора также называется именем параметра.

Например, можно определить параметр с именем Today , который может принимать в качестве значения день недели, как показано в следующем примере кода.

*Feature: Today
{
  *Option: Sunday{}
  *Option: Monday{}
  *Option: Tuesday{}
  *Option: Wednesday{}
  *Option: Thursday{}
  *Option: Friday{}
  *Option: Saturday{}
}

В предыдущем примере параметр Today может принимать только одно значение в любой момент времени. Сегодня не может быть как воскресенье , так и вторник. Однако не все параметры не ограничиваются монопольным значением; они могут принимать одно или несколько значений за раз. Например, если у вас есть робот, который может одновременно держать в руке несколько цветов пера, можно определить параметр PenColors , чтобы описать цвета, которые находятся в его руке. Вы можете указать PenColors (Red AND Green AND Yellow), и это может быть вполне допустимым.

Директива *UIType reserved позволяет указать, может ли параметр принимать только одно значение в любой момент времени (PICKONE) или можно ли назначить ему несколько значений в данный момент времени (PICKMANY). Директива *UIType позиционируется как дочерняя запись конструкции *Features .

Примечание GDL не позволяет назначать параметру "nothing". Таким образом, чтобы описать робота, не удерживающего ручки, необходимо объявить параметр None или Off для параметров PICKMANY. Имя используемого параметра не имеет значения; Вы можете указать, какой параметр назначается этому свойству, с помощью директивы *NoneOption . Параметр, который обозначает *NoneOption , несовместим с другими параметрами.

Вы можете определить столько конструкций *Feature , сколько у вас есть параметров. Все *Конструкции компонентов должны находиться в корневом контексте. Корневой контекст не имеет родительской конструкции.