Определение 15.89. Функция override-next-handler
(override-next-handler <выражение>*)
Ниже приведены примеры использования функций call-next-handler и override-next-handler (см. также рис. 15.32).
Рис. 15.32. Использование функций call-next-handler и override-next-handler
Пример 15.35. Использование функций call-next-handler и override-next-handler
(clear)
(defclass A (is-a USER) (role concrete))
(defmessage-handler A print-args ($?any)
(printout t "A: " ?any crlf)
(if (next-handlerp) then
(call-next-handler)))
(defmessage-handler USER print-args ($?any)
(printout t "USER: " ?any crlf))
(make-instance a of A)
(send [a] print-args 1234)
(defmessage-handler A print-args ($?any)
(printout t "A: " ?any crlf)
(if (next-handlerp) then
(override-next-handier (rest$ ?any))))
(send [a] print-args 1234)
Для получения всех конструкторов definstances, определенных в заданном модуле, предназначена функция get-definstances-list. Функция def instances-module служит для определения модуля, в котором используется заданный конструктор definstances. Синтаксис этих функций приведен ниже.
Определение 15.90. Функции get-def instances-list и def instances-module
(get-definstances-list [<имя-модуля>])
(definstances-module <имя-конструктора>)
Функция init-slots предназначена для выполнения процедуры инициализации слотов. Она доступна только в обработчиках сообщений класса. Обычно функция автоматически вызывается командами make-instance и initzializate-instance.
Определение 15.91. Функция init-slots
(init-slots)
Функции unmake-instanceи delete-instance удаляют некоторый объект, а функция delete-instance предназначена для использования внутри обработчиков сообщений и удаляет активный объект, unmake-instance может использоваться вне определения обработчиков сообщений, поэтому требует указания объекта, который необходимо удалить.
Определение 15.92. Функции unmake-instance и delete-instance
(unmake-instance <имя-или-адрес-объекта>+)
(delete-instance)
Для определения класса, имени и адреса объекта служат функции class, instance-name и instance-address соответственно.
Дата добавления: 2021-12-14; просмотров: 351;