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

时间:2014-01-17 07:10:05

标签: macros clojurescript

我一般都是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

1 个答案:

答案 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"))