Пример 5.15. Использование кавычек внутри строки
(assert-string "(book-name V'CLIPS User Guide\")")
Для добавления содержащегося в поле символа обратной косой черты используйте ее дважды. Если обратная косая должна содержаться внутри подстроки, ее необходимо использовать четыре раза. Например, для помещения в текущий список факта (a\b "c\d") необходимо вызвать функцию assert-string со следующим строковым аргументом:
Пример 5.16. Использование обратной косой черты
(assert-string "(a\\b \"c\\\\d\")")
Если добавления факта прошло удачно, функция возвращает индекс только что добавленного факта, в противном случае функция возвращает сообщение об ошибке и значение false. Функция assert-string не позволяет добавлять факт в случае, если такой факт уже присутствует в базе знаний (если вы еще не включили возможность присутствия одинаковых фактов).
5.2.8. Функция fact-existp
В этом разделе рассмотрим очень простую, но чрезвычайно важную функцию fact-existp. Эта функция определяет, присутствует ли в данный момент факт, заданный индексом или переменной указателем, в базе знаний системы. В случае если факт присутствует в списке фактов, функция возвращает значение true, иначе — false.
Определение 5.10. Синтаксис команды fact-existp
( fact-existp <определение-факта>)
Обычно эта функция применяется в правилах, описанных в следующей главе. Приведем простой пример использования данной функции:
Пример 5.17. Использование функции fact-existp
(clear)
(assert-string "(a\\b \"c\\\\d\")")
(fact-existp 0)
(retract 0)
(fact-existp 0)
Замечание
He забудьте выполнить команду clear, чтобы добавленный факт имел нулевой индекс. После первого вызова функция fact-exist вернет значение true, а после удаления факта с индексом 0 — false.
Функции для работы с неупорядоченными фактами
Для работы с неупорядоченными фактами в CLIPS предусмотрен целый ряд специальных функций. К ним относятся: fact-relation, fact-slot-names и fact-slot-value. Рассмотрим эти функции по порядку.
Функция fact-relation позволяет получить связь (relation) существующего факта с шаблоном. Связь факта с шаблоном, определенным с помощью конструктора deftemplate или неявно созданным шаблоном, определяется по первому полю факта. Это поле всегда является простым полем и используется CLIPS в качестве имени шаблона, с которым связан факт. Таким образом, функция fact-relation просто возвращает первое поле факта, или значение false, если указанный факт не найден.
Дата добавления: 2021-12-14; просмотров: 279;