假设我们有一个没有的插槽:initform
(defclass foo ()
((x :reader x :initarg x)))
Run Code Online (Sandbox Code Playgroud)
如何检查foo实例的插槽x是否绑定?
有一种方法可以用MOP来做到这一点,我觉得非常难看.有没有更简单的方法?
我宁愿诉诸:
(defclass foo ()
((x :reader x :initarg x :initform nil)))
Run Code Online (Sandbox Code Playgroud)
并检查它是否为零 - 在这种情况下,x可能永远不会为零(模糊).
Rai*_*wig 15
SLOT在包中搜索所有符号CL:
CL-USER 1 > (apropos "SLOT" "CL")
SLOT-MISSING (defined)
UNBOUND-SLOT-INSTANCE (defined)
SLOT-VALUE (defined)
SLOT-BOUNDP (defined)
SLOT-EXISTS-P (defined)
WITH-SLOTS (defined macro)
SLOT-MAKUNBOUND (defined)
UNBOUND-SLOT
MAKE-LOAD-FORM-SAVING-SLOTS (defined)
SLOT-UNBOUND (defined)
Run Code Online (Sandbox Code Playgroud)
我猜想SLOT-BOUNDP会做你想要的.通过查看Common Lisp HyperSpec,我们可以验证这一点:
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |