Определение 15.66, Функция next-methodp

(next-methodp)

Если функция next-methodp дала положительный результат, то обнаружен­ный скрытый метод родовой функции можно вызвать при помощи функции call-next-method. Скрытому методу передается тот же набор аргументов, что и вызывающему его методу родовой функции. Метод может продолжать свою работу и после вызова функции call-next-method. Кроме того, возмо­жен множественный вызов скрытых методов родовой функции. Для этого нужно использовать функцию call-next-method необходимое число раз. Ре­зультатом работы данной функции служит результат вызванного скрытого метода или значение FALSE в случае ошибки (см. рис. 15.23).

Пример 15.26. Использование функции call-next-method

(defmethod describe ((?a INTEGER))

(if (next-methodp) then

(bind?extension (str-cat " " (call-next-method)))

else

(bind?extension ""))

(str-cat "INTEGER"?extension))

(describe 3)

(defmethod describe ((?a NUMBER)) "NUMBER")

(describe 3)

(describe 3.0)

Функция call-next-handler подобна функции call-next-method и предна­значена для вызова скрытых обработчиков сообщений объектов, определен­ных пользователем классов. Определение функции call-next-handler при­ведено ниже.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: