Использование модулей в командах и функциях

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

Явное задание модуля выполняется с помощью имени модуля, разделенного с именем конструкции при помощи двойного двоеточия ::. Имя модуля и символ :: называются спецификатором модуля (module specifier). Например, запись main :: find-stuff ссылается на конструкцию find-stuff из модуля MAIN.

Рис. 12.3. Пример использования спецификатора модуля

Неявное задание модуля выполняется с помощью установки текущего ак­тивного модуля. Текущий модуль меняется при каждом определении нового модуля или при вызове функции set-current-module. Так как модуль main автоматически добавляется в систему при загрузке системы, а также при каждом вызове функции clear, то main является текущим модулем по умол­чанию. Таким образом, имя find-stuff ссылается на конструкцию find-stuff из модуля main. Пример явного и неявного задания модуля в командах приведен на рис. 12.3.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: