Пример 8.1. Использование группового параметра

(deffunction print-args (?a?b $?c)

(printout t?a “ “?b “ and “ (length?c) “ extras: “?c

crlf))

(print-args 1 2)

(print-args a b c d)

(print-args a)

В данном примере с помощью конструктора deffunction определяется функция print-args, которая принимает два обязательных параметра:?а и?b, и имеет групповой параметр $?с. Функция выводит на экран свои обязательные параметры, а также число полей в составном параметре и его содержимое. Результат выполнения данного примера приведен на рис. 8.1.

Рис. 8.1. Результат работы функции print-args

Обратите внимание, что вызов функции с числом параметров, меньшим минимального, приводит к сообщению об ошибке.

При вызове функции интерпретатор CLIPS последовательно выполняет действия в порядке, заданном конструктором. Функция возвращает значе­ние, равное значению, которое вернуло последнее действие или вычислен­ное выражение. Если последнее действие не вернуло никакого результата, то выполняемая функция также не вернет результата (как в приведенном выше примере). Если функция не выполняет никаких действий, то возвра­щенное значение равно false. В случае возникновения ошибки при выпол­нении очередного действия выполнение функции будет прервано и возвра­щенным значением также будет false.

Функции могут быть само- и взаимно рекурсивными. Саморекурсивная функция просто вызывает сама себя из списка своих собственных действий. В качестве примера можно привести функцию, вычисляющую факториал.


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



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