Common Lisp: Как проверить, привязан ли слот? (CLOS)

Скажем, у нас есть слот без :initform

(defclass foo ()
  ((x :reader x :initarg x)))

Как я могу проверить, связан ли слот x экземпляра foo?

Есть это способ сделать это с помощью MOP, который я нахожу очень уродливым. Есть ли более простой способ?

Я лучше прибегну к:

(defclass foo ()
  ((x :reader x :initarg x :initform nil)))

и просто проверю, равно ли оно нулю или нет — в этом случае x никогда не может быть равным нулю (неоднозначно).

5
задан mck 2 March 2012 в 03:28
поделиться