CLOSエクササイズ第04回
かなり前回から間があいてしまっているが、再び書く機会があったので。インスタンスの初期化の方法について。具体的には initform と initarg の使い方を簡単にメモ。まずは initform から。
? (defclass foo () ((a :accessor accessor-a :initform "Hello"))) #<STANDARD-CLASS FOO> ? (setf aaa (make-instance 'foo)) #<FOO #x30200103689D> ? (accessor-a aaa) "Hello"
次に initarg の使い方。initarg はキーワード引数にしないと機能しなかった。
? (defclass bar () ((b :accessor accessor-b :initform "Hey!" :initarg k))) #<STANDARD-CLASS BAR> ? (make-instance 'bar) #<BAR #x30200102B45D> ? (accessor-b (make-instance 'bar)) "Hey!" ? (setf bbb (make-instance 'bar k 3000)) > Error: Unbound variable: K ... ? ? ? (defclass bar () ((b :accessor accessor-b :initform "Hey!" :initarg :k))) #<STANDARD-CLASS BAR> ? (setf bbb (make-instance 'bar :k 3000)) #<BAR #x30200105FCAD> ? (accessor-b bbb) 3000 ?