Определение 5.9. Синтаксис команды assert-string

(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.


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



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