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