Lisp 函数存在或不检查

Lisp function exists or not checking

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

有很多方法可以做到这一点,但最终你需要检查函数名对应的符号是否有值(例如使用 boundp 函数),也许另外这个值是否是SUBRUSUBREXRXSUBR 数据类型(使用 type 函数)。

例如:

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

在这种情况下,如果符号 YourFunctionName 为空,(type YourFunctionName) 将 return nil 这将导致 member 表达式为 return nil。同样,如果 YourFunctionName 符号持有的值不是函数,则 member 函数将 return nil.

由于 AutoLISP 中的任何非零值都被解释为 True,使用 member 将验证 if 测试表达式,即使 member 没有明确地 return 一个布尔值。

Lee 的回答很棒,很多时候检查功能是否加载我正在使用 (and functionName) 它 return T 如果存在或不存在 returns Nil.