1

たとえば、(defclass x ()()) が p1 で定義されているとします。1 つの方法は、(symbol-package 'x) 経由でパッケージを取得することです。このソリューションの問題は、x が別のパッケージ p2 でエクスポートされることです。他の提案はありますか?

4

1 に答える 1

1

Rainer Joswig が言ったように、クラスはパッケージでは定義されていません。シンボルにはパッケージがあり、クラスの名前はシンボルです。

クラス定義が読み取られた、コンパイルされた、またはロードされた時点のの値 (おそらく 3 つの異なる値である可能性があります) を知りたい場合*PACKAGE*、その時点で格納するコードを記述しない限り、それを取得する方法はないと思います。時間。

さらに、有意義な情報とは思えません。パッケージは単にシンボルの名前空間であり、クラス定義が読み取られ、コンパイルされ、またはロードされた時点で最新のパッケージがクラス自体と関係がある必要はありません。

ただし、クラス x の名前がパッケージ p1 に存在することが本当に必要であるが、p2 がそれをエクスポートする場合は、x を p1 のシャドウリストにそのdefpackage形式で (またはその後に) 追加することに関心があるかもしれません。

于 2012-02-22T18:54:55.827 に答える