【发布时间】:2016-10-03 13:21:46
【问题描述】:
假设我有一堂课:
(defclass person () ())
然后我做了一些实例:
(setf anna (make-instance 'person))
(setf lisa (make-instance 'person))
如何获取对象本身或分配给它们的符号名称?
我希望能够说出类似(find-instances 'person) 的内容并获得类似(anna lisa) 或至少(#<PERSON {100700E793}> #<PERSON {100700E793}>) 的内容。
我正在搜索的内容相当于 ruby 中的 each_object。
我非常希望能够在没有外部库的情况下做到这一点。
【问题讨论】:
-
你想在这里达到什么目的?
-
TBH 这更像是一个调试任务,而不是试图实现一些东西。我正在尝试获取
hunchentoot*acceptor*实例,以便停止正在运行的服务器。但是hunchentoot:*acceptor*给了我错误,因为我必须在请求的上下文中询问接受者。然而,能够获得一个类的实例似乎很方便,我想我将来也可以使用它,用于调试、检查等...... -
AFAIK,任何解决方案都取决于实现。对于 CCL,请参阅下面的答案。我无法在 SBCL 手册中找到类似的内容,并且谷歌搜索“lispworks heap walk”也没有产生任何结果。
-
@RainerJoswig 这只是一个例子。我编辑了它。
标签: common-lisp clos