3

私はCLOSの使用にかなり慣れていません。ここでは、CLOS を使用して Queue を定義する 1 つの可能な方法を書きました。

(defclass Queue ()
    ((queue-size
        :reader queue-size
        :initarg :queue-size
        :initform (error "Provide a queue-size when initialising a Queue")
        :type number)
    (elements
        :accessor elements
        :initform (make-array queue-size :initial-element nil))
    (put-ptr
        :accessor put-ptr
        :initform 0
        :type number)
    (get-ptr
        :accessor get-ptr
        :initform 0
        :type number)))

ご覧のとおり、スロットの値を使用してqueue-size、スロット内の配列を作成しelementsます。しかし、残念ながら、これにより次のエラーが発生します。

*** - DEFAULT-ELEMENTS: variable QUEUE-SIZE has no value

私が言ったように、私はCLOSにかなり慣れていません。これを行う方法はありますか?ある種の init メソッドを上書きすることは可能ですか? はいの場合、どうすればよいですか?

4

1 に答える 1