【发布时间】:2014-04-16 19:26:50
【问题描述】:
如何在 Clojure 中使用 java 方法作为函数参数?
例如,我想做一个函数组合:
user> (Integer. (str \9))
9
user> ((comp Integer. str) \9)
CompilerException java.lang.ClassNotFoundException: Integer., compiling:(NO_SOURCE_PATH:1:2)
这行不通。
memfn 也无济于事:
user> (map (comp (memfn Integer.) str) "891")
IllegalArgumentException No matching method found: Integer. for class java.lang.String clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:53)
有什么想法吗?
相关问题(不过,没有给出正确答案):
- Using interop constructor in map function(Clojure)
- Why does Clojure say "no matching method" for an illegal argument?
- How do I use Clojure memfn with a Java constructor?
- How to get an Fn which calls a Java method?(在答案中有很好的解释)
(注意:dave 建议的答案似乎是使用匿名函数作为包装器,是最好的解决方案)
【问题讨论】: