Common lisp 测试符号是否为Common Lisp中的defstruct名称

Common lisp 测试符号是否为Common Lisp中的defstruct名称,common-lisp,Common Lisp,如果符号是结构的名称,是否有比此更简单的测试方法: (fboundp 'make-symbol) 此外: CL-USER 14>(忽略错误(子类型“foo”结构对象)) T T CL-USER 15>(忽略错误(子映射“条形”结构对象)) 无 # (defun symbol-names-structure-p (symbol) (let ((class (find-class symbol nil))) (and class (typep class 'structure-cla

如果符号是结构的名称,是否有比此更简单的测试方法:

(fboundp 'make-symbol)
此外:

CL-USER 14>(忽略错误(子类型“foo”结构对象))
T
T
CL-USER 15>(忽略错误(子映射“条形”结构对象))
无
#
(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
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>