Next: 12.4 スーパクラス
Up: 12 オブジェクト指向プログラミング
Previous: 12.2 クラス,メソッド,スロットアクセス
クラスを宣言する時に,スロットの属性を指定する
ことができる.
> (defclass foo ()
((a :accessor foo-a :initarg :a :initform 1)
(b :accessor foo-b :initarg :b)
(c :accessor foo-c :initform 3)))
#<STANDARD-CLASS FOO 244020371>
> (setq foo1 (make-instance 'foo :a 'one :b 'two))
#<FOO 36325624>
> (slot-value foo1 'a)
ONE
> (foo-a foo1)
ONE
> (slot-value foo1 'b)
TWO
> (foo-b foo1)
TWO
> (slot-value foo1 'c)
3
> (foo-c foo1)
3
> (setf (slot-value foo1 'a) 'uno)
UNO
> (slot-value foo1 'a)
UNO
> (setf (foo-b foo1) 20)
20
> (slot-value foo1 'b)
20
:accessorというのは,インスタンス変数へアクセスするための
関数名を指定するためのもので,
:initformはインスタンス変数の初期値を与えるためのものです.
:initargは,make-instanceの引数として初期値を与える場合の
キーワードです.
generated through LaTeX2HTML. M.Inaba 平成18年5月6日