Пример 15.27. Использование функции call-specific-method
(clear)
(defmethod + ( (?а INTEGER) (?b INTEGER))
(* (- ?a ?b) (- ?b ?a)))
(list-defmethods +)
(preview-generic +12)
(watch methods)
(+ 1 2)
(call-specific-method +112)
(unwatch methods)
Рис. 15.24.Использование функции call-specific-method
Функция get-method-restrictions (рис. 15.25) возвращает составную величину, содержащую информацию об ограничениях для данного метода, используя следующий формат:
Ø минимальное число аргументов;
Ø максимальное число аргументов (может равняться —1 для групповых символов);
Ø количество ограничений;
Ø индекс составной величины, содержащей информацию о первом ограничении;
Ø индексы составных величин, содержащих информацию о втором, третьем ограничениях и т. д.;
Ø индекс составной величины, содержащей информацию о последнем ограничении;
Ø первое ограничение является ограничением запроса (true или false);
Ø число ограничений классов;
Ø первое, второе ограничения класса и т. д.;
Ø последнее ограничение класса;
Ø последнее ограничение является ограничением запроса (true или false);
Ø число ограничений классов;
Ø первое, второе ограничения класса и т. д.;
Ø последнее ограничение класса.
Определение 15.70. Функция get-method-restrictions
(get-method-restrictions <имя-родовой функции> <индекс-метода>
<выражение>*)
Пример 15.28. Использование функции get-method-restrictions
(clear)
(defmethod foo 50
((?a INTEGER SYMBOL)
(?b (=11)) $?c))
(get-method-restrictions foo 50)
Рис. 15.25.Использование функции get-method-restrictions
Дата добавления: 2021-12-14; просмотров: 247;