3

たとえば、*a*モジュール内で動的変数を定義するとしますm1m1次に、モジュールにモジュールをマウントしm2ます。

(in-package m2)

(mount-module sub (#:m1)
   (m1:*a* 3))

モジュールから値3を取得するにはどうすればよいですm2か?たとえば、現在、私はそのような方法でそれをハックする必要があります:

(restas:with-context
    (second (gethash 'm1
                     (gethash
                       :modules
                       (gethash (find-package :m2)
                                restas::*pkgmodules-traits*))))
    m1:*a*))

確かに、これは良い方法にさえ近いものではありません。

4

1 に答える 1

1

少し良い解決策は次のとおりです。

(defmethod restas:module-context ((module symbol))
      (second (gethash module (restas::pkgmodule-traits-modules *package*))))

次に、次のようにしてモジュールのコンテキストにアクセスできますmodule-context

(with-context (module-context 'sub)
  m1:*a*)

またはさらに良い:

(with-module 'sub
  m1:*a*)

マウントしたパッケージの名前ではなく、モジュールのマウント時に使用した名前を使用することに注意してください。

更新:私が説明したメソッドがRESTASに追加されました。

于 2014-09-08T03:08:59.440 に答える