2013-06-24 21 views
1
(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? 

https://gist.github.com/PuercoPop/5850773CLOS:我在這裏做什麼,在元類中設置一個插槽?

回答

3

dao-class有槽direct-keys,其:initarg名爲:keys,所以,如果我正確地理解你的問題,答案IST:「是的,(:keys id)爲在間位的direct-keys插槽值類dao-class「。

編輯更確切地說,在這裏,因爲措辭不太清楚... dao-class是一個元類,即一類,其實例是類本身。在這種情況下,definition實例dao-class,其具有槽direct-keys(在dao-class聲明),並且該槽的中definition值從經由:keys選項中提供的值初始化。