1

假设我想找出一个类是在哪个包中定义的,例如说 (defclass x ()()) 是在 p1 中定义的。一种方法是通过 (symbol-package 'x) 获取包。这个解决方案的问题是 x 被导出到不同的包 p2 中。还有其他建议吗?

4

1 回答 1

1

正如 Rainer Joswig 所说,类不是在包中定义的。符号有包,类的名称是一个符号。

如果您想知道*PACKAGE*读取、编译或加载类定义时的值(可能是三个不同的值),我不相信有任何方法可以检索到该值,除非您编写代码来存储它时间。

此外,它似乎不是一个有意义的信息。包只是符号的命名空间,在读取、编译或加载类定义时处于当前状态的包没有理由与类本身有任何关系。

但是,如果您真正想要的是类 x 的名称驻留在包 p1 中,但 p2 将其导出,您可能有兴趣将 x 以defpackage形式(或之后)添加到 p1 的影子列表中。

于 2012-02-22T18:54:55.827 回答