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 如何映射要执行的Java方法序列_Clojure - Fatal编程技术网

Clojure 如何映射要执行的Java方法序列

Clojure 如何映射要执行的Java方法序列,clojure,Clojure,以下工作将起作用: (map #(%1 "21") [identity]) 但是,以下代码失败 (map #(%1 "21") [.toString]) 如何创建Java方法的序列/集合?Java方法与clojure中的函数不同,不是一等公民。不能将java方法作为参数传递、返回或存储在变量和集合中。但您可以创建函数,也可以只创建包装原始方法调用的匿名函数 (map #(%1 21) [(memfn toString)]) => ("21") (map #(%1 21) [#(.to

以下工作将起作用:

(map #(%1 "21") [identity])
但是,以下代码失败

(map #(%1 "21") [.toString])

如何创建Java方法的序列/集合?

Java方法与clojure中的函数不同,不是一等公民。不能将java方法作为参数传递、返回或存储在变量和集合中。但您可以创建函数,也可以只创建包装原始方法调用的匿名函数

(map #(%1 21) [(memfn toString)])
=> ("21")

(map #(%1 21) [#(.toString %)])
=> ("21")

您已经得到了答案,但我最关心的是导致您提出这个问题的用例。我好像找不到。我宁愿
comp
将它们组合在一起,以构建一个要执行的函数。