Clojure:读取函数上的字符串
是否有方法将读卡器与函数值一起使用,例如: (读取字符串(pr str+) RuntimeException不可读表单clojure.lang.Util.RuntimeException (Util.java:219)Clojure:读取函数上的字符串,clojure,Clojure,是否有方法将读卡器与函数值一起使用,例如: (读取字符串(pr str+) RuntimeException不可读表单clojure.lang.Util.RuntimeException (Util.java:219) ?您可能已经知道(pr str+的输出不是读取器可以解析的有效Clojure代码:“#”。当使用函数pr、prn、println等时,函数值的输出有意地环绕在#周围。如果您只需要名称,您可以发送带有(名称“+)的符号 但是一般来说,如果您想读回clojure read,那么使用c
?您可能已经知道
(pr str+
的输出不是读取器可以解析的有效Clojure代码:“#”
。当使用函数pr
、prn
、println
等时,函数值的输出有意地环绕在#周围。如果您只需要名称,您可以发送带有(名称“+)的符号
但是一般来说,如果您想读回clojure read,那么使用clojure read是个坏主意,因为clojure的阅读器可能会在这个过程中执行一些代码。也许可以看看edn阅读器:clojure.edn/read-string
但是,您可能只需要将字符串转换回符号,在这种情况下,(符号名称)函数就足够了。您可以详细说明您试图实现的功能吗?我需要将任意函数的名称作为字符串传输,然后读回并应用函数。只需函数的名称?换句话说,您可以假设双方都已经知道函数的定义?
(defn string-fn [f]
(let [w (java.io.StringWriter.)]
(print-dup f w)
(str w)))
(let [plus (read-string (string-fn +))]
(plus 1 2))
#=(clojure.core$_PLUS_. )