Пример 15.24. Использование функции switch
(defglobal ?*x* = 0)
(defglobal ?*y* = 1)
(def function foo (?val)
(switch ?val
(case ?*x* then *x*)
(case ?*y* then *y*)
(default none) ) )
(foo 0)
(foo 1)
(foo 2)
Рис. 15.21.Использование функции switch
Работа с родовыми функциями
Список функций, предоставляемых CLIPS для работы с методами родовых функций, а также краткое описание их назначения приведен в табл. 15.13.
Таблица 15.13. Работа с родовыми функциями
Функция | Описание |
get-defgeneric-list | Получение списка существующих родовых функций |
get-defmethod-list | Поиск модуля, в котором определена родовая функция |
defgeneric-module | Получение списка существующих методов родовых функций |
type | Определение типа получаемого параметра |
next-methodp | Проверка существования скрытых методов родовой функции |
call-next-method | Вызов скрытого метода родовой функции |
override-next-method | Вызов скрытого метода родовой функции с измененными аргументами |
call-specific-method | Вызов определенного метода родовой функции |
get-method-restrictions | Получение ограничений для заданного метода родовой функции |
Функция get-defgeneric-list возвращает составную величину, содержащую имена всех определенных в системе родовых функций, видимых в заданном модуле. Если параметр <имя-модуля> не задан, функция выведет список родовых функций, определенных в текущем модуле. Вместо имени модуля допустимо использовать символ *. В этом случае возвращается список всех родовых функций.
Определение 15.62. Функция get-defgeneric-list
(get-defgeneric-list [<имя-модуля>])
Функция defgeneric-module служит для определения модуля, в котором указана заданная родовая функция.
Определение 15.63. Функция defgeneric-module
(defgeneric-module <имя-родовой-функции>)
Для определения списка методов и индексов, определенных в системе родовых функций, видимых в заданном модуле, служит функция get-defmethod-list. Если необязательный параметр <имя-родовой-функции> не указан, будет получен список методов всех родовых функций.
Дата добавления: 2021-12-14; просмотров: 275;