Lisp.クラスとインスタンス(Classes and Instances)
665 ワード
構造(structures)を作成するには、defstructを呼び出して構造の形式を計画し、make-pointのような関数を使用して作成する2つのステップが必要です.インスタンスの作成にも同様の2つのステップが必要です.まずdefclassを使用してクラスを定義します.
この定義はcircleの各インスタンスにradiusとcenterという構造内のフィールドfieldのような2つのスロット(slots)があるということです.
このクラスのインスタンスを作成するには、指定した関数ではなく汎用make-instance関数を呼び出し、クラス名を最初のパラメータとして渡します.
このインスタンスのスロットを設定するには、setfとslot-valueを使用して共同で完了します.
構造フィールドと同様に、初期化されていないスロットは未定義です.
(defclass circle ()
(radius center))
この定義はcircleの各インスタンスにradiusとcenterという構造内のフィールドfieldのような2つのスロット(slots)があるということです.
このクラスのインスタンスを作成するには、指定した関数ではなく汎用make-instance関数を呼び出し、クラス名を最初のパラメータとして渡します.
[7]>
(setf c (make-instance 'circle))
#<CIRCLE #x000348F69C38>
このインスタンスのスロットを設定するには、setfとslot-valueを使用して共同で完了します.
[8]> (setf (slot-value c 'radius) 1)
1
構造フィールドと同様に、初期化されていないスロットは未定義です.