Clojure:调用多个arity函数

时间:2014-10-31 08:21:48

标签: clojure clojure-java-interop arity

我在printf(特别是java.io.PrintWriter)上调用多个arity函数System.out时遇到问题。

user=> (.printf System/out (into-array Object ["foo"]))
IllegalArgumentException No matching method found: printf for class java.io.PrintStream
clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:53)
user=>

1 个答案:

答案 0 :(得分:3)

您的代码尝试调用printf(Object[] arg)类的方法java.io.PrintStream。但这种方法不存在。你希望像这样称呼printf(String format, Object ... args)

(.printf System/out "arg1: %s" (into-array Object ["foo"]))
=> #<PrintStream java.io.PrintStream@708e4544>
arg1: foo

此处#<PrintStream java.io.PrintStream@708e4544>是从printf返回的对象。