3

比方说,我*a*在模块中定义了一个动态变量m1。然后我m1在一个模块中安装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 回答