我想發送一個字符串中的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. 如何字符串轉換爲正則表達式表達
- 4. 如何將字符串表達式轉換爲VB代碼?
- 5. 如何將字符串轉換爲C#中的lambda表達式?
- 6. 如何將Python表達式轉換爲字符串
- 7. 如何將字符串轉換爲布爾表達式
- 8. 如何將字符串轉換爲lambda表達式?
- 9. 如何將一個字符串轉換爲linq表達式?
- 10. 如何將PHP字符串轉換爲PHP正則表達式
- 11. 如何將字符串轉換爲正則表達式literal
- 12. 如何將布爾表達式字符串轉換爲對象?
- 13. 如何將字符串轉換爲十進制表達式?
- 14. 如何將Clojure中的字符LazySeq轉換爲字符串?
- 15. 如何將字符串轉換爲正則表達式的字符串
- 16. 將表達式轉換爲字符串表示形式?
- 17. 如何將clojure關鍵字轉換爲字符串?
- 18. Python:將格式字符串轉換爲正則表達式
- 19. 如何將「泛型」表達式轉換爲斷言謂詞表達式? (Clojure的)
- 20. 如何將字符串轉換成數學表達式編程
- 21. 如何將字符串轉換成正則表達式在JavaScript
- 22. 你如何評價一個字符串作爲clojure表達式?
- 23. 如何將字符串轉換爲Clojure中的函數?
- 24. 轉換字符串表達式轉換爲十進制
- 25. 轉換lambda表達式字符串
- 26. 轉換字符串表達式用C
- 27. 將字符串轉換爲PL/PGSQL中的表達式
- 28. C#將魔術字符串轉換爲lambda表達式
- 29. 將正則表達式轉換爲Ruby中的字符串
- 30. 將字符串轉換爲數學表達式
當心,這將允許Web客戶端(在互聯網上的任何人)在Web服務器上執行任意代碼過程,如重新定義增值稅,脫殼,刪除文件等。 – Chouser 2013-04-09 06:11:28
明白了。在允許此操作之前,我的應用程序將驗證並授權發件人完全信任。或者,它將解析,分析和/或沙箱化注入的代碼。 – 2013-04-09 12:10:02