我想发送一个字符串中的clojure表达式,以便在接收器处进行评估,这可能是一个用compojure编写的web服务。例如,假设我有字符串“(* 7 6)”,我想把它变成'(* 7 6),然后我可以传递给eval并获得42.这个操作在JavaScript中是微不足道的,但是不太确定如何在clojure中做到这一点。提示?如何将字符串转换为clojure表达式?
回答
这应该做的伎俩:
(eval (read-string "(* 7 6)")) ;; 42
或者,简称:
(load-string "(* 7 6)") ;; 42
我觉得这个应该在这里提到;请注意,即使您不调用eval,read-string本身也会评估代码: ''(read-string“#=(clojure.java.shell/sh \”ls \“)”)'' – bmaddy 2013-04-09 15:54:43
我没有找到#=阅读器语法的文档。请你好好解释一下吗?这是一个非常重要的观察! – 2013-04-09 16:39:38
我在下面的SW问题中找到了答案http://stackoverflow.com/questions/6427967/clojure-reader-macro。这是相当大的一笔交易,因为如果不写我自己的读者就不可能阻止评估,并且可能会毁掉我的计划来使用clojure进行安全注入。 – 2013-04-09 16:46:51
- 1. 将表达式转换为字符串
- 2. c#将字符串表达式转换为布尔表达式
- 3. 如何将PHP字符串转换为PHP正则表达式
- 4. 如何将字符串转换为布尔表达式
- 5. 如何将字符串转换为十进制表达式?
- 6. 如何将布尔表达式字符串转换为对象?
- 7. 如何将字符串表达式转换为VB代码?
- 8. 如何将一个字符串转换为linq表达式?
- 9. 如何将Clojure中的字符LazySeq转换为字符串?
- 10. 如何将字符串转换为正则表达式的字符串
- 11. 将表达式转换为字符串表示形式?
- 12. 如何将clojure关键字转换为字符串?
- 13. Python:将格式字符串转换为正则表达式
- 14. 如何将字符串转换成正则表达式在JavaScript
- 15. 你如何评价一个字符串作为clojure表达式?
- 16. 转换字符串表达式转换为十进制
- 17. 转换lambda表达式字符串
- 18. 将字符串表达式转换为布尔逻辑 - C#
- 19. 将正则表达式转换为Ruby中的字符串
- 20. 将方案表达式转换为字符串
- 21. 将字符串转换为Ruby中的正则表达式
- 22. python:将字符串转换为正则表达式
- 23. 将字符串转换为日期的SSIS表达式
- 24. Javascript:将字符串转换为正则表达式
- 25. 将字符串转换为表达式树?
- 26. 将字符串转换为针对集合的Lambda表达式
- 27. 将RGB字符串转换为RGBa字符串的正则表达式
- 28. 如何将字符串列表转换为查询字符串?
- 29. 使用字符串转换列表为字典表达式c#
- 30. MySQL的字符串转换为表达
当心,这将允许Web客户端(在互联网上的任何人)在Web服务器上执行任意代码过程,如重新定义增值税,脱壳,删除文件等。 – Chouser 2013-04-09 06:11:28
明白了。在允许此操作之前,我的应用程序将验证并授权发件人完全信任。或者,它将解析,分析和/或沙箱化注入的代码。 – 2013-04-09 12:10:02