Page 22 - AutoLISP и Visual LISP в среде AutoCAD
P. 22

2.8. СОЗДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ


                                     2.8.1. ИСПОЛЬЗОВАНИЕ ФУНКЦИИ DEFUN


                      Функция пользователя может быть создана при помощи функции defun
                  (define function). В общем, виде она записывается следующим образом:
                  (defun имя_функции (a a a … a / v v v … v )
                                                                               n
                                                                         3
                                                             n
                                                       3
                                                                     2
                                                                  1
                                                1
                                                   2
                         (выражение_1 )
                         (выражение_2 )
                         ………………..
                         (выражение_n )
                  ),
                  где a   1  a 2  a … a   n  – аргументы  функции; v         1  v 2  v … v   n  – локальные
                                                                                      3
                                   3
                  переменные.
                      Правила наименования функций те же, что и наименования переменных.
                  Если  имя  функции  пользователя  совпадает  с  именем  встроенной  функции
                  AutoLisp, то это приводит к переопределению последней.
                      Пользовательские  функции  не  могут  иметь  произвольное  число

                  аргументов, как встроенные функции "+", "-" и др. Вызов пользовательской
                  функции с неверным числом аргументов приводит к ошибке «слишком мало
                  аргументов» или «слишком много аргументов».
                      Пользовательская функция возвращает результат вычисления последнего
                  списка, находящегося внутри defun.
                      Не имеет значения, в какой последовательности в тексте lsp-файла идут
                  описания  функций defun. AutoLisp перед  выполнением  программы
                  загружает в память все функции.
                      Пример:
                  (defun tan (x)                      ; Определим функцию вычисления тангенса
                       ( / (sin x) (cos x) )          ; Функция tan возвращает результат
                  )                                   ; вычисления последнего списка
































                                                                                                             21
   17   18   19   20   21   22   23   24   25   26   27