Macros ClojureScript宏关于绑定到动态变量的警告

Macros ClojureScript宏关于绑定到动态变量的警告,macros,clojurescript,Macros,Clojurescript,一般来说,我对ClojureScript还不熟悉,我收到了一条关于宏的警告,但我不理解 我试图用宏更改全局绑定,当我编译时,我得到一个警告,全局变量没有声明为动态的,即使它是动态的 因此,在我的宏文件中,我有: (ns gaz.rendertarget) (defmacro with-rt [rt & body] `(binding [*current-rt* ~rt] ~@body)) 在rendertarget.cljs文件中 (ns gaz.rendertarget)

一般来说,我对ClojureScript还不熟悉,我收到了一条关于宏的警告,但我不理解

我试图用宏更改全局绑定,当我编译时,我得到一个警告,全局变量没有声明为动态的,即使它是动态的

因此,在我的宏文件中,我有:

(ns gaz.rendertarget)

(defmacro with-rt [rt & body]
`(binding [*current-rt* ~rt]
    ~@body))
在rendertarget.cljs文件中

(ns gaz.rendertarget)

(def ^{:dynamic true} *current-rt* nil)
在我的第一次编译中

WARNING:  not declared ^:dynamic at line 173 src/cloj/core.cljs
我使用的是ClojureScript版本0.0-2138


这一切似乎都很好,但我不喜欢警告。如果我必须拥有它们,我宁愿我理解它们的全部含义:d

更新:
您是否尝试过更改cljs文件(以及名称空间)

文件:blog/utils/rtay.cljs

(ns blog.utils.rtay
  (:require [blog.utils.macros :as macros]))


(def ^:dynamic *current-rt* nil)
(macros/with-rt hola (println "ey"))

嗨,加里,我有一个问题:在这个表达式中“=”是什么意思
(binding[*current rt*~rt]=~@body)
Ha!这意味着我在复制粘贴之前意外按下了=DHi@GaryLiddon,你检查过我的解决方案了吗?我想现在它可以解决你的问题了problem@GaryLiddon最新答复。有了这个把戏,我就没有更多的警告了