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

2.14. АНОНИМНАЯ ФУНКЦИЯ


                      Использование        defun     для  создания  собственных  функций  было
                  рассмотрено  выше.  Однако  в AutoLisp есть  механизм  создания  так
                  называемой анонимной функции lambda.
                       (lambda аргументы выражение_1 выражение_2 … выражение_n)
                      Она  обычно  используется, когда  при  определении  новая  функции  не
                  именуется.  Это  так  же  делает  замысел  программиста  более  очевидным,  за
                  счет  того,  что  функция  находится  там  же,  где  она  используется. lambda
                  возвращает значение последнего выражения и часто используется в связи с
                  apply и/или mapcar для выполнения функции над списком.
                      Пример:

                  (apply '(lambda (x y z)
                             (* x (- y z))
                             )
                   '(5 20 14)
                  ) ; Возвращаемое значение 30

                      Пример:

                  (setq counter 0)
                  (mapcar '(lambda (x)
                                 (setq counter (1+ counter)) (* x 5)
                                 )
                   '(2 4 -6 10.2)
                  ) ; Возвращается список (10 20 -30 51.0)













































                                                                                                             31
   27   28   29   30   31   32   33   34   35   36   37