lambda 函数中的全局变量有没有办法消除,顺便帮忙完善下这个推测最佳纸张的函数
本帖最后由 vectra 于 2013-7-9 10:17 编辑(defun ace-fit-paper (width height /)
(mapcar
(function (lambda (x) (list (/ width (car x)) (/ height (cadr x)))))
'((297 210) (420 297) (594 420) (841 594) (1189 841))
)
)
在LISP编辑器中通过“检查代码”功能发现HEIGHT WIDTH 被视作全局变量,请教高手,这种编辑习惯是不是不好,有没有办法消除这两个全局变量
函数的目的是根据width height值和推测最适合用什么纸张来打印,返回字符串“A4”~“A0”之一 本帖最后由 cre8or 于 2013-7-9 10:31 编辑
不知道有没有误会你的意思 你遇上的应该不是全局变量 只是lambda的闭包问题 早期lisp的通病 我的办法是用(eval(read(strcat"(defun foo(x).." width "...." height "..)")))(mapcar foo '(...))代替 不要完全相信LISP编辑器中通过“检查代码”功能,它经常误报!函数的参数不是全局变量!
页:
[1]