Common lisp CLOS:我在这里做什么,在元类中设置一个槽?

Common lisp CLOS:我在这里做什么,在元类中设置一个槽?,common-lisp,clos,Common Lisp,Clos,dao类具有插槽直接键,其:initarg名为:keys,因此,如果我正确理解您的问题,答案是:“是,(:keys id)为元类dao类中的直接键插槽提供值。” 编辑更准确地说,这里的措辞不太清楚dao类是一个元类,即一个类,其实例本身就是类。在这种情况下,类定义是dao类的一个实例,它具有插槽直接键(在dao类中声明),并且定义中该插槽的值根据通过:keys选项提供的值初始化 (ql:quickload :postmodern) (defpackage :test-case (:use :

dao类
具有插槽
直接键
,其
:initarg
名为
:keys
,因此,如果我正确理解您的问题,答案是:“是,
(:keys id)
为元类
dao类
中的
直接键
插槽提供值。”

编辑更准确地说,这里的措辞不太清楚
dao类
是一个元类,即一个类,其实例本身就是类。在这种情况下,
定义
dao类
的一个实例,它具有插槽
直接键
(在
dao类
中声明),并且
定义
中该插槽的值根据通过
:keys
选项提供的值初始化

(ql:quickload :postmodern)
(defpackage :test-case
  (:use :cl)
  (:import :pomo))
(in-package :test-case)

;; (defclass dao-class (standard-class)
;;   ((direct-keys :initarg :keys :initform nil :reader direct-keys)
;;    (effective-keys :reader dao-keys)
;;    (table-name)
;;    (column-map :reader dao-column-map))
;;   (:documentation "Metaclass for database-access-object classes."))

(defclass definition ()
  ((id :col-type serial :reader definition-id)
   (content :col-type string :initarg :content :accessor definition-content)
   (word :col-type string :initarg :word :accessor definition-word))
  (:metaclass dao-class)
  (:keys id))

(pomo:dao-keys 'definition)
;; => (ID)
;; What I am setting with :keys? a slot in the meta class?