是否有一种更简单的方法来测试符号是否是结构的名称而不是:
(fboundp 'make-symbol)
Run Code Online (Sandbox Code Playgroud)
Rai*_*wig 10
(defun symbol-names-structure-p (symbol)
(let ((class (find-class symbol nil)))
(and class (typep class 'structure-class))))
CL-USER 11 > (defstruct foo bar)
FOO
CL-USER 12 > (symbol-names-structure-p 'bar)
NIL
CL-USER 13 > (symbol-names-structure-p 'foo)
T
Run Code Online (Sandbox Code Playgroud)
也:
CL-USER 14 > (ignore-errors (subtypep 'foo 'structure-object))
T
T
CL-USER 15 > (ignore-errors (subtypep 'bar 'structure-object))
NIL
#<CONDITIONS:ILLEGAL-TYPE-SPECIFIER 402001578B>
Run Code Online (Sandbox Code Playgroud)