pat*_*atz 4 binding eval clojure let
我的问题是下一个,我尝试用一些变量来评估列表,使用let来赋值给这个变量
如果我这样做(def a (list * 'x 'y)),(let [x 3 y 3] (eval a))我有一个CompilerException java.lang.RuntimeException:无法在此上下文中解析符号:x,编译:(NO_SOURCE_PATH:6)
但如果我跑了
(def x 4) (def y 4),(eval a)我有一个16,无论如何,如果我再次跑(let [x 3 y 3] (eval a)),我有16,
存在一种正确绑定x和y并评估列表的方法?
TY!
let定义无法从eval函数体访问的词法范围绑定.这与任何其他功能没有什么不同.但是,创建的绑定def是可访问的,因为它们是名称空间全局.所有函数都可以访问命名空间全局变量,只要它们是公共的.