假设我在模块*a*
中定义了一个动态变量m1
。然后我在m1
模块中挂载模块m2
:
(in-package m2)
(mount-module sub (#:m1)
(m1:*a* 3))
如何从模块m2
获取值3?例如,目前,我必须以这种方式破解它:
(restas:with-context
(second (gethash 'm1
(gethash
:modules
(gethash (find-package :m2)
restas::*pkgmodules-traits*))))
m1:*a*))
当然,这甚至都不是一个好方法。
答案 0 :(得分: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。