Lisp函数存在或未检查



我想检查lisp程序中是否存在函数定义,以决定运行哪个程序块。函数定义是用写在另一个文件上的。Net&我在AutoCAD工作。请帮忙。

有很多方法可以做到这一点,但最终您需要检查与函数名称对应的符号是否包含值(例如使用boundp函数(,也许还需要检查该值是否为SUBRUSUBREXRXSUBR数据类型(使用type函数(。

例如:

(member (type YourFunctionName) '(subr usubr exrxsubr))

在这种情况下,如果符号YourFunctionName为空,则(type YourFunctionName)将返回nil,这将导致member表达式返回nil。类似地,如果YourFunctionName符号所保持的值不是函数,则member函数将返回nil

由于AutoLISP中的任何非零值都被解释为True,因此即使member没有显式返回布尔值,使用member也会验证if测试表达式。

Lee的回答很棒,很多时候检查函数是否加载,我使用(and functionName),如果存在,它会返回T,如果不存在,则返回Nil

最新更新