我是Clojure的初学者。 您能帮忙最后两个表达式吗? 我无法弄清楚为什么“无法解析符号:在这种情况下导致”。 非常感谢! (我正在尝试解决列表中包含引用的问题。)
(let [result ['(get result 1) 2]]
(println (get result 1)) ;this can work
(println (eval '(get result 1))) ;error
(println (eval(first result)))) ;error`
我希望(map eval result)
会产生[2 2]
。
答案 0 :(得分:0)
eval
评估您在绑定到*ns*
但名称空间为空白的命名空间中发送的表单。因此,周围的let值不会保留。定义的变量,动态绑定等将在那里。这篇文章很好地解释了Variable scope + eval in Clojure
顺便说一句,eval
非常强大,令人迷惑,初学时会liquor饮。在Clojure的6到7年编程中,我从不需要它。