泛型函数slot-definition-readers
获取一个必须是 a 的参数direct-slot-definition
。如果一个对象是从另一个类继承的类的实例,我如何才能获得该对象所有有效插槽的读者?我是否必须手动遍历树并调用每个超类中的slot-definition-readers
结果class-direct-slots
,收集结果,还是有另一种我不知道的方法?
问问题
295 次
1 回答
2
这个“社区维基”答案在这里提供了这个功能的实现。下面的内容不使用破坏性操作(NCONC、MAPCAN),因为实现可能会返回一个内部列表而不复制它。MAPPEND是从alexandria导入的,MOP操作可以从closer-mop导入。
(defun all-direct-slots (class)
(append (class-direct-slots class)
(mappend #'all-direct-slots
(class-direct-superclasses class))))
(defun all-slot-readers (class)
(mappend #'slot-definition-readers
(all-direct-slots class)))
于 2016-07-20T06:34:17.990 回答