Определение параметров данных 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 , сколько у вас есть параметров. Все *Конструкции компонентов должны находиться в корневом контексте. Корневой контекст не имеет родительской конструкции.