我一般都是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
答案 0 :(得分:2)
<强>更新强>
并且您是否尝试更改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"))