(message-modify-instance <объект> <переопределения-слота>*)
Если остановка процесса сопоставления образцов нежелательна, можно применять функцию active-message-modify-instance, которая так же использует сообщение message-modify для изменения значений слотов объекта. Однако приостановка процесса сопоставления образцов при этом не происходит.
Определение 11.25. Синтаксис функции active-message-modify-instance
(active-message-modify-instance <объект> <переопределения-слота>*)
Дублирование объектов
Для дублирования объектов CLIPS предоставляет четыре функции: duplicate-instance, active-duplicate-instance, message-duplicate-instance и active-message-duplicate-instance. Они позволяют дублировать объекты и обновлять слоты объектов без вызова put-сообщений. Каждая из этих функций возвращает имя нового объекта в случае успеха и значение false — в случае неудачи.
Функции дублирования могут опционально определять имя объекта, в который будет скопирован старый объект. Если это имя не задано, функция сгенерирует имя, используя функцию (gensym*). Если заданный объект уже существует, он будет удален с или без использования сообщений в зависимости от того, какая функция была вызвана.
Функция duplicate-instance использует сообщение direct-duplicate для изменения значений слотов объекта. Сопоставление образцов приостанавливается до тех пор, пока копирование всех слотов не будет выполнено.
Определение 11.26. Синтаксис функции duplicate-instance
(duplicate-instance <объект> [to <объект>] <переопределения-слота>*)
Пример использования функции duplicate-instance приведен на рис. 11.30.
Если необходимо выполнить дублирование объекта без приостановки процесса сопоставления образцов, можно воспользоваться функцией active-duplicate-instance. Она также использует сообщение direct-duplicate для изменения значений слотов объекта, но не останавливает при этом процесс сопоставления образцов.