怎样判断一个命令是Lisp命令还是ARX命令
使用(defun c:xxx()) 或commandmethod("xxx")都可以定义一个新的命令并在命令行中运行,但使用Lisp调用时,却不同。使用defun 定义的命令,在lisp中的调用方法为 (c:xxx)
使用 commandmethod 定义的命令,在lisp中的调用方法为(command "xxx")
问题:怎样通过代码去判断,一个命令是由Lisp定义的,还是由commandmethod 定义的?
(= 'subr (type c:xxx)) 测试通过,谢谢! SUBR, EXRXSUBR, and USUBR
The name of the function (the name that was specified in defun or at load time). SUBR refers to internal and compiled functions, EXRXSUBR refers to external ARX functions, and USUBR identifies user-defined functions. 使用Lisp定义的命令可以使用 (= 'subr (type c:xxx)) ,使用ARX定义的命令,只能返回nil,不知道怎么判断。 (if (= 'subr (type c:xxx))
"LISP 命令"
"非LISP命令")
此判断有点欠妥,对于没有定义的命令,也会返回 非LISP命令 学习了 !
页:
[1]