获取类的插槽名称

让我们说我们有一个类

(defclass person ()
  (name email age))

要获取类的槽的名称,我们使用函数 class-slots。这可以在 close-mop 系统中提供的 close-mop 包中找到。要加载正在运行的 lisp 图像,我们使用 (ql:quickload :closer-mop)。我们还必须确保在调用类槽之前完成该类。

(let ((class (find-class 'person)))
  (c2mop:ensure-finalized class)
  (c2mop:class-slots class))

返回有效槽定义对象的列表 :

(#<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION S/TRANSFORMATIONS::NAME>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION S/TRANSFORMATIONS::EMAIL>
 #<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION S/TRANSFORMATIONS::AGE>)