java Clojure“eval”无法评估!
Possible Duplicate:
How do you evaluate a string as a clojure expression?
从JTextField/Area(来自Java应用程序)获取数据返回类Java的数据。lang.String。将此数据传递给Clojure的eval并不是对其进行评估,而是打印,因为它是一个字符串。如何进行评估评估此数据并返回输出
例如:假设文本字段中的数据为(+23)
(println (eval (.getText text-field) ))
This打印(+23)而不是5
# 1 楼答案
您必须将字符串
"(+ 2 3)"
转换为列表数据结构,即(list + 2 3)
或'(+ 2 3)
,然后将其传递给eval以评估表单。字符串被求值为字符串,因此在求值字符串"(+ 2 3)"
后得到"(+ 2 3)"
例:
Read是“Reader”,它读取流并将其解析为clojure代码,然后使用eval对其进行评估
# 2 楼答案
您需要先将字符串转换为Clojure数据结构,然后才能对其进行求值,因为eval需要一个有效的表单数据结构,如下文档所示:
最简单的方法是在字符串上使用read-string,例如