【发布时间】:2010-12-25 12:29:53
【问题描述】:
我怎样才能得到类似以下的东西?:
(evaluate-text "(+ 1 2)") ; resolves to 3
【问题讨论】:
标签: clojure eval metaprogramming evaluation
我怎样才能得到类似以下的东西?:
(evaluate-text "(+ 1 2)") ; resolves to 3
【问题讨论】:
标签: clojure eval metaprogramming evaluation
user> (eval (read-string "(+ 1 2)"))
3
您可能永远不需要这样做。宏和 fns 使这种事情在 99% 的时间里都是不必要的。这是相当脆弱的,如果这些字符串来自用户输入等等,则可能是不安全的。
【讨论】:
read-string 位于 cljs.reader/read-string 命名空间中,而不是像 Clojure 中的 core。
(load-string "(+ 1 2)")
【讨论】:
它必须有多相似? Clojure 的 eval 适用于列表,所以:
(eval (list + 1 2)) #=> 3
【讨论】: