如何在Common Lisp中获取类信息?

时间:2015-02-14 20:03:23

标签: common-lisp

例如,我希望从REPL中看到一个插槽的可用访问器列表,而不是跳转到源。我怎么做?

1 个答案:

答案 0 :(得分:2)

不确定是否有办法轻松获取accessor的列表。对象检查功能倾向于从特定于实现的包中导出。您可以查看package filecl-mop,了解它们的位置。相关的行是

...
 (:shadowing-import-from
  #+openmcl-native-threads #:ccl
  #+cmu #:pcl
  #+sbcl #:sb-pcl
  #+lispworks #:hcl
  #+allegro #:mop
  #+clisp #:clos
  #:class-slots #:slot-definition-name)
...

该项目还会导出slot-namesto-alist方法,这些方法听起来完全一样。

如果您在slime,而不是普通的命令行REPL,则可以使用slime-inspect。如果您使用它来检查class,您将看到(除其他外)一个专门针对它的方法列表(您需要以这种方式检查class,所以如果您有一个实例,你需要先打电话给class-of