0
引用(包括语法和非语法)似乎无法检测let语句里面瓦尔:Clojure的报价里面让
(let [foo 1] (eval `(print foo)))
这将产生任何约束的前值被绑定到foo的错误或使用(def foo bar)。有没有办法使语法引用使用“本地”变量,让定义呢?
引用(包括语法和非语法)似乎无法检测let语句里面瓦尔:Clojure的报价里面让
(let [foo 1] (eval `(print foo)))
这将产生任何约束的前值被绑定到foo的错误或使用(def foo bar)。有没有办法使语法引用使用“本地”变量,让定义呢?
凯文
你接近,这应该做的工作(基本上,你应该解除引用在引用语句中的局部变量)
(let [foo 1] (eval `(print ~foo)))
此外,虽然eval
无疑是一个有效的语言功能,总体目标是什么?完全可能有更好的方法。
Frank
引文结束替代的价值:
(let [foo 1] (eval `(print ~foo)))
...或显式绑定的变量:
(declare :^dynamic foo)
(binding [foo 1] (eval '(print foo)))