Копирование объекта
Так же, как и для изменения, CLIPS предоставляет два предопределенных системных обработчика для создания копии объекта: direct-duplicate и message-duplicate.
Определение 11.14. Синтаксис системных обработчиков direct-duplicate и message-duplicate
(defmessage-handler USER direct-duplicate primary
(?new-instance-name ?slot-override-expressions))
(defmessage-handler USER message-duplicate primary
(?new-instance-name ?slot-override-expressions)
Обработчик direct-duplicate производит копирование объекта без использования сообщений put- для установки значения заданных слотов. Значения слота из первичного объекта непосредственно копируются в заданные слоты нового объекта. Если имя нового объекта совпадает с уже существующим именем объекта, то существующий объект удаляется без применения сообщений. Это сообщение используется функциями duplicate-instance и active-duplicate-instance.
Обработчик message-duplicate копирует объект, используя сообщения. Значения слота из первичного объекта копируются в заданные слоты нового объекта с применением сообщений put- и get-. Если имя нового объекта совпадает с уже существующим именем объекта, то существующий объект удаляется с помощью сообщения delete. После создания нового объекта ему посылается сообщение init. Это сообщение используется функциями message-duplicate-instance и active-message-duplicate-instance.