Macros ClojureScript宏关于绑定到动态变量的警告
一般来说,我对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)
(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最新答复。有了这个把戏,我就没有更多的警告了