獲取類的插槽名稱

讓我們說我們有一個類

(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>)