Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure:读取函数上的字符串_Clojure - Fatal编程技术网

Clojure:读取函数上的字符串

Clojure:读取函数上的字符串,clojure,Clojure,是否有方法将读卡器与函数值一起使用,例如: (读取字符串(pr str+) RuntimeException不可读表单clojure.lang.Util.RuntimeException (Util.java:219) ?您可能已经知道(pr str+的输出不是读取器可以解析的有效Clojure代码:“#”。当使用函数pr、prn、println等时,函数值的输出有意地环绕在#周围。如果您只需要名称,您可以发送带有(名称“+)的符号 但是一般来说,如果您想读回clojure read,那么使用c

是否有方法将读卡器与函数值一起使用,例如:

(读取字符串(pr str+)

RuntimeException不可读表单clojure.lang.Util.RuntimeException (Util.java:219)


您可能已经知道
(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_. )