我要检查lisp程序中是否存在函数定义,或者不决定运行哪个程序块。 函数定义是用.Net写在另一个文件上的,而我正在使用AutoCAD。 请帮忙。
答案 0 :(得分:1)
执行此操作的方法有很多,但是最终您需要检查与函数名称相对应的符号是否具有值(例如,使用boundp
函数),也许还需要检查该值是否为{ {1}},SUBR
或USUBR
数据类型(使用EXRXSUBR
函数)。
例如:
type
在这种情况下,如果符号(member (type YourFunctionName) '(subr usubr exrxsubr))
为空,则YourFunctionName
将返回(type YourFunctionName)
,这将导致nil
表达式返回member
。同样,如果nil
符号保留的值不是函数,则YourFunctionName
函数将返回member
。
由于AutoLISP中的任何非nil值都被解释为True,因此即使nil
没有明确返回布尔值,使用member
也会验证if
测试表达式。
答案 1 :(得分:0)
李的回答很好,很多次检查功能是否已加载我正在使用(and functionName)
,如果存在则返回T
,否则返回Nil
。