我被困在一個看似基本的東西上。我有一個命名空間,我有一些定義:解析宏中的符號
(ns my-namespace)
(def my-definition "HELLO")
(def my-definition2 "HI")
現在,我想在一個宏使用瓦爾的價值my-namespace
,但我想動態檢索的符號。例如,
(defmacro my-macro [n]
(-> "my-namespace/my-definition" symbol resolve var-get))
以這種方式檢索符號在函數中(只要命名空間被加載)工作,但不在宏中。
在宏中,符號無法解析。我試過引用和不引用,但它仍然不起作用。
在宏中可以使用像這樣創建的符號的值嗎?如果是這樣,怎麼樣?
'我-namespace'需要'我-macro'展開之前加載。這是嗎? – OlegTheCat
向宏名稱空間聲明添加'(require [my-namespace:refer:all])'解決了問題。如果你發佈了一個答案,你可以在@OlegTheCat上得分,如果你對此感興趣的話。 –