伪书虫86 发表于 2014-11-13 15:43:21

关于检测函数是否存在的问题,望各路大侠出手相助啊

前段时间,73兄搞了个图块转代码的程序,于是我想把他这个跟之前的用command插入外部块结合起来
于是搞出了这个(or (图块代码函数) (command插入外部块的函数)) 本想是图块的代码函数存在的话就加载图块代码函数,要是不在的话,就用command来插入图块,但是直接这样写的话,当图块代码函数不存在的话,(图块代码函数) 返回的不是nil,所以想请教下各路高人,有没有办法写个函数,当图块代码函数存在时,就运行图块代码函数 不存在时,就运行另一个函数(即command的函数,或者返回NIL也行)

Gu_xl 发表于 2014-11-13 15:43:22

(if(not 图块代码函数) (command插入外部块的函数)(图块代码函数))

ll_j 发表于 2014-11-13 16:01:32

你的要求可能无法达到,检测函数是否存在有办法,但无法检测是不是“图块代码函数”,函数定义后不加载就是磁盘上的文档,加载后不运行没人知道他要干什么,除非你特别为他加一个说明,以后你追踪这个说明,就像我们看到路上那么多人,你不知道谁是干什么的。
不过一旦有此功能的代码加载,后面的的command也就没什么意思了。
顺便说一句,command函数不管执行什么命令,产生什么结果,返回值总是nil。

伪书虫86 发表于 2014-11-13 16:31:59

ll_j 发表于 2014-11-13 16:01 static/image/common/back.gif
你的要求可能无法达到,检测函数是否存在有办法,但无法检测是不是“图块代码函数”,函数定义后不加载就是 ...

CAD是可以判断的,运行程序时,要是缺少某个子函数,就会有提示,no function definition:xxx,我现在就是想,当xxx程序是no function definition:时不是返回no function definition:这个字符串提示信息,而是返回一个值(nil或者T或者一个固定的值)给我就行
至于后面的command的函数先无视它,我拿它只是为了想说明的更清楚的,现在看来是适得其反了

伪书虫86 发表于 2014-11-13 18:46:41

Gu_xl 发表于 2014-11-13 18:33 static/image/common/back.gif
(if(not 图块代码函数) (command插入外部块的函数)(图块代码函数))

_$ (if (not (aaa))(setq a 1)(setq a 2))
; 错误: no function definition: AAA
_$ a
nil
_$

(图块代码函数) ,当“图块代码函数”无定义时,前面加不加 NOT,返回的都是 no function definition:

lsjj 发表于 2014-11-13 19:09:14

(not aaa)
;;補字
页: [1]
查看完整版本: 关于检测函数是否存在的问题,望各路大侠出手相助啊