2013-03-05 57 views
6

下面的工作:如何通过Java方法序列映射到执行

(map #(%1 "21") [identity]) 

但是下面的代码失败

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

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

+1

你已经得到了答案只是匿名函数来创建功能,但我最关注的使用情况下,导致你要问的问题。我似乎无法找到一个。我宁愿将它们“压缩”在一起以构建一个执行的函数。 – 2013-03-06 04:15:58

回答

10

Java方法不是像clojure中的函数一样的头等公民。您不能将java方法作为参数传递,返回或存储在变量和集合中。但是你可以通过memfn或原包装的方法调用

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

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