インスタンス初期化時に複数のスロットを同じ値で埋めたい - lisp-cookbook-ja/common-lisp GitHub Wiki
インスタンス初期化時に複数のスロットを同じ値で埋めたい
複数のスロットの初期化引数に同じ名前を与えることが可能です。 同名の初期化引数を持つスロットは同じ値で初期化されます。
下記の例では、start、currentスロットの両方に初期化引数名:startを指定しています。
(defclass stopwatch ()
((start :initarg :start :reader start-time)
(current :initarg :start :accessor current-time)))
(let ((obj (make-instance 'stopwatch :start (get-universal-time))))
(format t "~A ==> ~A~%" (start-time obj) (current-time obj))
(sleep 3)
(setf (current-time obj) (get-universal-time))
(format t "~A ==> ~A~%" (start-time obj) (current-time obj)))
;-> 3437000414 ==> 3437000414
; 3437000414 ==> 3437000417
;=> nil