小编Gab*_*ini的帖子

如何访问元对象/槽定义槽?为什么 slot-value 可以访问对象的槽,但不能访问元对象的槽?

我在访问插槽定义之外的插槽时遇到问题。我可以检查类对象,查看它们的槽定义,甚至获得有关槽定义的一些标准信息。但是,我无法访问有关插槽定义的用户定义信息。

我已经在 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)

common-lisp clos mop

2
推荐指数
1
解决办法
651
查看次数

标签 统计

clos ×1

common-lisp ×1

mop ×1