【问题标题】:Clojure: invoking multiple arity functionsClojure:调用多个 arity 函数
【发布时间】:2014-10-31 08:21:47
【问题描述】:

我在调用 java.io.PrintWriter 上的多参数函数 printf 时遇到问题(具体来说,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=>

【问题讨论】:

    标签: clojure clojure-java-interop arity


    【解决方案1】:

    您的代码尝试调用 java.io.PrintStream 类的方法 printf(Object[] arg)。但是这样的方法是不存在的。可能你想这样称呼这个printf(String format, Object ... args):

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

    这里#&lt;PrintStream java.io.PrintStream@708e4544&gt;是一个从printf返回的对象。

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 2015-12-15
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多