clojure - 如何将 Clojure memfn 与 Java 构造函数一起使用?

标签 clojure

我想使用 Java 构造函数作为一流的 Clojure 函数。我的用例是将字符串序列转换为具有单个字符串构造函数的 Java 对象序列:

简单的Java对象:

public class Foo {
  public Foo(String aString){
    // initialize the Foo object from aString
  }
}

在 Clojure 中我想这样做:

(defn make-foo (memfn Foo. a-string))
(apply make-foo '("one" "two" "shoe"))

apply 应该返回从字符串创建的 Foo 对象列表,但我得到了这个:

IllegalArgumentException No matching method found: org.apache.hadoop.io.Text. for class java.lang.String  clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:53)

最佳答案

别打扰。 memfn 实际上已被弃用,取而代之的是匿名函数文字,您还可以使用匿名函数文字调用构造函数,例如 #(Foo.%)

此外,您的 apply 调用将尝试使用三个字符串参数调用 make-foo 一次。您可能想要:

(map #(Foo. %) ["one" "two" "three"])

关于clojure - 如何将 Clojure memfn 与 Java 构造函数一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15058823/

相关文章:

testing - 在 Clojure 中运行单元测试的 'right' 方式

clojure - 在 Clojure 中使用二维数组的最佳实践?

clojure - 什么是有状态传感器?

clojure - MD 5 哈希的不同值取决于技术

android - Android 上的 Clojure

Emacs cider clojure : queue-0. 1.1 不可用

clojure - 如何验证字符串是否是 Clojure 中的有效 URL

clojure - 如何使用 Clojure 分析 Java 源文件

clojure - 从我的应用程序中启动 REPL

ClojureScript 格式字符串与 goog.string.format 不能替代