Robot Control Meta Language (RCML)

5.1 Написание функции для конкретного класса роботов

Задание новой функции робота начинается с ключевого слова function, далее через разделитель следует наименование класса робота, для которого создается новая функция, затем следует знак «::», затем следует имя новой функции и потом в круглых скобках список параметров, который может быть пустым. После списка параметров в фигурных скобках следует код функции – список её операторов. Синтаксис задания функции робота:

function класс_робота::имя_функции(список_параметров) {
	список_операторов
}

Пример задания новой функции sum для типа робота класса test:

function robot_test::sum(a, b) {
	c = a + b;
	robot->do_something(c);
	return c;
}

Задание функции робота очень похоже на задание обычной функции в языке RCML, однако выполнение такой функции имеет ряд существенных различий.

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

В случае если в данной функции робота не происходит обращения к роботу, в рамках которого выполняется функция, для данной функции все равно будет зарезервирован реальный физический робот указанного класса.

Дополнительно в рамках функций роботов запрещено использование специальных переменных за ненадобностью, так как робот, в контексте которого выполняется данная функция, всегда доступен через обращение к абстрактному роботу.

В функции робота можно менять режимы выполнения других функций робота обычными способами. Подробнее об режимах выполнения функций и способах их изменения читайте в разделе «Указание режимов выполнения функций».

5.2 Написание функции для нескольких классов роботов

Задание новой функции сразу для нескольких классов роботов аналогично заданию новой функции для одного робота, за исключением того, что требуемые классы роботов указываются через запятую. Пример задания функции сразу для двух классов роботов test и tarakan:

function robot_test, robot_tarakan::sum(a, b) {…

Указываемые классы роботов для данной функции должны обладать всеми теми функциями, которые вызываются через абстрактного робота в рамках данной, в противном случае данная новая функция является противоречивой и неприменимой для указанного набора классов роботов.

Адрес:

Россия, Пермь
ул. Монастырская, 12,
лит. А, офис 600

Телефон:

+7 (342) 214 01 84

E-mail:

info@robotct.ru