如何在 Common Lisp 中获取 class 信息?
How to get class information in Common Lisp?
例如,我想从 REPL 查看一个插槽的可用访问器列表,而不是跳转到源代码。我怎么做?
不确定是否有办法轻松获取 accessor
的列表。对象检查函数倾向于从特定于实现的包中导出。您可以查看 package
file of cl-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-names
and to-alist
方法,它们的功能与它们听起来完全一样。
如果您在 slime
,而不是普通的命令行 REPL,您可以使用 slime-inspect
。如果你用它来检查 class
,你会看到(除其他外)专门处理它的方法列表(你需要用这种方式检查 class
,所以如果你有一个实例,你需要先调用 class-of
。
例如,我想从 REPL 查看一个插槽的可用访问器列表,而不是跳转到源代码。我怎么做?
不确定是否有办法轻松获取 accessor
的列表。对象检查函数倾向于从特定于实现的包中导出。您可以查看 package
file of cl-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-names
and to-alist
方法,它们的功能与它们听起来完全一样。
如果您在 slime
,而不是普通的命令行 REPL,您可以使用 slime-inspect
。如果你用它来检查 class
,你会看到(除其他外)专门处理它的方法列表(你需要用这种方式检查 class
,所以如果你有一个实例,你需要先调用 class-of
。