Пример 11.41. Класс а и обработчики сообщений put-x и delete


(defclass A (is-a USER)

(role concrete)

(slot x (default 34)

(create-accessor write))

(slot у (default abc)))

(defmessage-handler A put-x before (?value)

(printout t "Slot x set with message." crlf) )

(defmessage-handler A delete after ()

(printout t "Old instance deleted. " crlf))

После этого попробуйте создать объект с помощью функции make-instance, удалить его и создать объект с переопределением значения для некоторого слота. Обратите внимание на содержимое слотов объекта и выводимые на экран сообщения. Пример подобных операций с объектом приведен на рис. 11.21

 

 

Рис. 11.21.Использование команды make-instance

Конструктор definstances

Подобно конструктору deffacts, конструктор definstances позволяет опре­делять объекты, которые будут создаваться каждый раз при выполнении команды reset. При выполнении reset все текущие объекты получают сообщение delete, после чего CLIPS производит вызовы функции make-instance для каждого объекта, определенного в конструкторе definstances.

Определение 11.17. Синтаксис конструктора definstances

(definstances <имя> [active] [<комментарии>]

<шаблоны-объектов>)

<шаблон-объекта>::= (<определение-объекта>)

Конструктор definstances не может использовать классы, которые еще не были определены. Объекты, заданные в definstances, создаются по порядку, и если создание какого-либо объекта заканчивается неудачно, оставшиеся объекты не будут созданы. Кроме того, будет прервано выполнение других конструкторов definstances, если они существуют. Обычно для создания

объектов definstances используют функцию make-instance (что вызывает задержку текущего процесса сопоставления образцов). Однако, если это не желательно, можно написать ключевое слово active после имени конструктора definstances, что укажет конструктору на необходимость воспользоваться функцией active-make-instance.

Создайте конструкторы, представленные в примере 11.42.



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


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

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

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

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