Clojure: извикване на множество arity функции

Имам проблем с извикването на функцията за множествена арност printf на java.io.PrintWriter (по-специално 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=>

person pmf    schedule 31.10.2014    source източник


Отговори (1)


Вашият код се опитва да извика метод 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.

person hsestupin    schedule 31.10.2014