我在访问插槽定义之外的插槽时遇到问题。我可以检查类对象,查看它们的槽定义,甚至获得有关槽定义的一些标准信息。但是,我无法访问有关插槽定义的用户定义信息。
我已经在 google 上搜索了很长一段时间,最终阅读了CLOS & MOP 规范、一些Lisp Cookbook、关于一些MOP 概念的内容,以及StackOverflow上的一些 相关 问题 ,但没有多大帮助。我什至阅读了SBCL 的实现,但无济于事。
从我能够组合在一起的部分来看,我可以SLOT DEFINITION通过某些函数访问 a 的许多插槽,例如访问usingNAME的插槽(这当然很有帮助),但对于没有的插槽,我不能这样做这些功能之一。例如,在定义插槽时,我无法访问包提供的插槽。SLOT DEFINITIONCLOSER-MOP:SLOT-DEFINITION-NAMEREFERENCESMITODEFCLASS
这是一个最小的工作示例:
(load "~/quicklisp/setup.lisp")
;;;; I'll use MITO because its classes have a funny REFERENCES slot
(quicklisp:quickload :mito)
;;;; I find CLOSER-MOP functions easier to use than
;;;; implementation-specific functions
(quicklisp:quickload :closer-mop)
;;;; Creates a few dummy classes
(defclass example ()
((one-slot :col-type (:varchar …Run Code Online (Sandbox Code Playgroud)