如何将字符串评估为clojure表达式?

Nic*_*ton 30 evaluation eval metaprogramming clojure

我怎么能得到类似下面的东西?:

(evaluate-text "(+ 1 2)")  ; resolves to 3
Run Code Online (Sandbox Code Playgroud)

Bri*_*per 30

user> (eval (read-string "(+ 1 2)"))
3
Run Code Online (Sandbox Code Playgroud)

你可能不应该这样做.宏和fns 99%的时间都不需要这种东西.这非常脆弱,如果这些字符串来自用户输入,则可能不安全,依此类推.

  • load-string完全符合他的要求 (8认同)
  • 好吧,我想做一些根本不安全的事情:一个REPL聊天机器人. (2认同)
  • 例如,如果您要将 Clojure 数据结构保存到文件中进行存储,然后再恢复它们,则您需要它。 (2认同)