Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Определение 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 при­ведено ниже.

 

Определение 15.67. Функция call-next-handler

 

(call-next-handler)

 

Для изменения набора аргументов при вызове скрытого метода родовой функции служит функция override-next-method. В остальном она подобна предыдущей.

 

Рис. 15.23. Использование функции call-next-method


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

mylektsii.su - Мои Лекции - 2015-2026 год. (0.623 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал