Как получить доступ к контексту подмодулей RESTAS из других модулей RESTAS
Допустим, я определяю динамическую переменную *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*))
Что, конечно, даже близко не подходит.
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.