我創建了一個API服務器的庫,這裏有我一個simpliefied版本有:一個在宏綁定沒有解決
(defonce ^:dynamic *my-token* nil)
(defmacro def-my-token
[token1 & body]
`(binding [*my-token* ~token1] [email protected]))
和主「後」的方法:
(defn my-post-request [url1]
(try
(let [res (client/post (str "api/url/base" url1)
{:body (json/write-str (:secret my-token)) ; my-token should come from the macro
;......
這裏就是我想用它:
(defn -main [& args]
(def-my-token "fdsfdsfdsfds"
; now "my-token" should be created and visible in "my-post-request", shouldn't it?
(print
(my-post-request "/some_end_point"))))
但它說:「無法解析符號:我的令牌在這種情況下」
我想知道爲什麼? doens't def-my-token,是一個宏,定義它?爲什麼不?以及如何解決這個問題?
更新: 也沒有(defonce ^:dynamic *token* nil)
它不起作用。爲什麼不? 爲什麼不定義宏不夠?
'defonce'和^:動態有點不一致。試試'def'代替。 – jmargolisvt