- 484 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:23:09 ]
- 簡単にやるならこんな感じかな
(use gauche.sequence) (use util.list) (define-class <test> () (%slots)) (define-method initialize ((self <test>) initargs) (next-method) (slot-set! self '%slots (map (lambda (x) (cons (string->symbol (keyword->string (car x))) (cadr x))) (slices initargs 2)))) (define-method ref ((self <test>) slot) (assq-ref (slot-ref self '%slots) slot)) (define-method (setter ref) ((self <test>) slot val) (assq-set! (slot-ref self '%slots) slot val)) ほんとうのスロットのようにふるまわせたいならMOP使わないとだめかも。
|

|