(assert-string <строковое-выражение>)
Строковое выражение должно быть заключено в кавычки. Функция преобразует заданное строковое выражение в факт CLIPS, разделяя отдельные слова на поля, с учетом определенных в системе на текущий момент шаблонов. Если в строке необходимо записать внутреннее строковое выражение, представляющее, скажем, некоторое поле, то для включения в строковое выражение символа кавычек используется обратная косая черта (backslash). Например, факт (book-name "clips user Guide") можно добавить следующим образом:
Пример 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.