Пример 11.52. Действия над набором объектов


(do-for- all-instances

((?man-or-boy MALE) (?woman-or-girl FEMALE))

(= ?man-or-boy:age ?woman-or-girl:age)

(printout t "(" ?man-or-boy "," ?woman-or-girl ")" crlf))

В данном примере:

Ø do-for-all-instances — одна из функций CLIPS, работающая с наборами объектов (функции будут рассмотрены ниже);

Ø ( (?man-or-boy MALE) (?woman-or-girl FEMALE)) — шаблон, определяющий набор из пар объектов противоположного пола;

Ø (= ?man-or-boy:age ?wornan-or-girl :age) — запрос, отбирающий только пары одного возраста;

Ø (printout t "(" ?man-or-boy "," ?woman-or-girl ")" crlf) — действия, выводящие пары найденного набора на экран.

Результат выполнения данного выражения представлен на рис. 11.31.

Рис. 11.31.Результат выполнения функции do-for-all-instances над заданным набором

Функции-запросы

CLIPS предоставляет 6 функций (табл. 11.2), способных оперировать с на­борами объектов. Эти функции называются функциями-запросами наборов объектов.

Таблица 11.2. Функции для операций над наборами объектов

______________________________________________________________________________________________

Функция Назначение

______________________________________________________________________________________________

any-instancep Определяет, удовлетворяет ли запросу один или более наборов объектов

find-instance Возвращает первый объект из набора удовлетворяющему

запросу

find-all-instance Группирует и возвращает все наборы объектов,

удовлетворяющих запросу

do-for-instance Выполняет действия для первого набора объектов,

удовлетворяющих запросу

do-fo-all-instance Выполняет действия для каждого набора объектов,

удовлетворяющих запросу

delayed-do-for-all-instance Группирует все наборы объектов, удовлетворяю­щие запросу, и выполняет действия над этой группой

____________________________________________________________________________________

Функция запроса набора объектов может быть вызвана в произвольном месте, где вызывается обычная функция CLIPS. Если при выполнении любой из этих функций происходит ошибка, функция тут же прерывается и возвращает значение false.

Пользователь имеет возможность прерывать выполнение некоторых из указанных функций и возвращать при этом какой-то результат. Для этого служат функции break и return, которые можно использовать внутри функций do-for-instance, do-for-all-instance и delayed-do-for-all-instances. Функция break фактически прерывает выполнение запроса, а функция return помогает вернуть некоторое значение.

Функция any-instancep выполняет проверку удовлетворения запроса каким-либо набором объектов. Она применяет запрос к каждому набору объектов, который соответствует шаблону. Если набор объектов удовлетворяет запросу, то функция немедленно прекращается и возвращает значение TRUE. В противном случае — FALSE.



Дата добавления: 2021-12-14; просмотров: 282;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.