wuqiu1986 发表于 2013-1-16 10:23:45

请教关于defun xxx nil 问题

(defun LM:acdoc nil
    (eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
    (LM:acdoc)
)
谁能解释一下上面函数的执行过程。
定义函数时,函数后面跟的不是参数,而是nil,作用是什么?

20060510412 发表于 2018-9-6 17:24:31

好巧啊楼主,我也是看到Lee Mac这段函数的时候,搞不懂,然后来论坛搜索,结果就发现了你的帖子,哈哈。
想必你的AutoLISP现在已经学得很好了吧,我前两天才开始接触这个,以前学过一些vba,但是感觉vba好像越来越不受重视了。

wuqiu1986 发表于 2013-1-16 11:04:01

没人愿意赐教下吗?这是lee-mac的一段程序,哪位高手指点下,谢谢

Gu_xl 发表于 2013-1-16 11:37:24

wuqiu1986 发表于 2013-1-16 11:04 static/image/common/back.gif
没人愿意赐教下吗?这是lee-mac的一段程序,哪位高手指点下,谢谢

无参数函数,和
(defun LM:acdoc ()
(eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
   (LM:acdoc)
)
是一回事!

xiabin68 发表于 2013-1-16 12:51:44

又学习了,,还有这种 说法,,

xiabin68 发表于 2013-1-16 12:55:55

又学习了,,还有这种 说法,,

snddd2000 发表于 2013-1-16 14:07:39

为什么函数里还要重新定义同名函数在执行呢?

(defun LM:acdoc nil
(vla-get-activedocument (vlax-get-acad-object))
)
这样有什么区别呢?

wuqiu1986 发表于 2013-1-16 15:19:42

snddd2000 发表于 2013-1-16 14:07 static/image/common/back.gif
为什么函数里还要重新定义同名函数在执行呢?

(defun LM:acdoc nil


我也不明白,看不出区别,但是Lee-mac作为一个大神,我想不应该是故弄花哨吧

wuqiu1986 发表于 2013-1-16 15:21:02

Gu_xl 发表于 2013-1-16 11:37 static/image/common/back.gif
无参数函数,和
(defun LM:acdoc ()
(eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vla ...

想问下老大,就像6楼问的一样:
为什么函数里还要重新定义同名函数在执行呢?

(defun LM:acdoc nil
(vla-get-activedocument (vlax-get-acad-object))
)
这样有什么区别呢?

zyhandw 发表于 2013-1-17 14:00:15

正如G版所说。还有就是,本坛子里有这方面知识!

ll_j 发表于 2013-1-17 16:13:00

真是看不懂,如果是只使用一次的函数,为什么不直接使用
(setq lm:acdoc (vla-get-activedocument (vlax-get-acad-object)))
页: [1] 2
查看完整版本: 请教关于defun xxx nil 问题