如何从Lisp类导出插槽和访问器?
这是我的班级套餐:如何从Lisp类导出插槽和访问器?,lisp,common-lisp,sbcl,clos,Lisp,Common Lisp,Sbcl,Clos,这是我的班级套餐: (in-package :cl-user) (defpackage foo (:use :cl) (:export :bar)) (in-package :foo) (defclass bar () (baz)) 我可以在packagecl-user中创建bar的实例 CL-USER> (defvar f) F CL-USER> (setf f (make-instance 'foo:bar)) #<FOO:BAR {10044340C3}&
(in-package :cl-user)
(defpackage foo
(:use :cl)
(:export :bar))
(in-package :foo)
(defclass bar ()
(baz))
我可以在packagecl-user
中创建bar
的实例
CL-USER> (defvar f)
F
CL-USER> (setf f (make-instance 'foo:bar))
#<FOO:BAR {10044340C3}>
。。。导致此错误消息:
When attempting to read the slot's value (slot-value), the slot
BAZ is missing from the object #<FOO:BAR {10044340C3}>.
[Condition of type SIMPLE-ERROR]
尝试读取插槽值(插槽值)时,插槽
对象#中缺少BAZ。
[简单错误类型的条件]
我已经尝试将baz
添加到:export
列表中,但这也不起作用
如何从包中导出插槽和访问者?您不能导出插槽和访问者
在Common Lisp中,可以导出符号
因此,导出命名插槽的符号BAZ
然后在包CL-USER
中:
(slot-value some-instance 'foo:baz)
(slot-value some-instance 'baz)
未经报道,你必须写:
(slot-value some-instance 'foo::baz)
如果将符号导入包CL-USER
:
(slot-value some-instance 'foo:baz)
(slot-value some-instance 'baz)