Es gibt printf. Es druckt direkt auf stdout.Clojure sprintf?
Wie wäre es mit sprintf, das genauso formatiert wie printf, aber eine Zeichenfolge ohne Nebenwirkungen liefert?
Es gibt printf. Es druckt direkt auf stdout.Clojure sprintf?
Wie wäre es mit sprintf, das genauso formatiert wie printf, aber eine Zeichenfolge ohne Nebenwirkungen liefert?
In Clojure heißt es format und residiert in clojure.core
: printf
entspricht (comp print format)
.
Sie sollten cl-format
, in der clojure.pprint
Lib überprüfen. Es ist ein Port von Common Lisp FORMAT Funktion. Es kann Dinge tun, die Java printf
nicht tun können, wie conditionals, über ASTA Iterieren, usw.
Ihre Frage zu beantworten, mit cl-format
, ein erstes Argument von nil
einen String zurück; Ein erstes Argument von true
wird auf STDOUT gedruckt.
user> (cl-format nil "~{~R~^, ~}" [1 2 3 4])
"one, two, three, four"
Beachten Sie, dass, wenn format
nicht bereits in Clojure existieren, können Sie auch die Ausgabe von Clojure des printf
wie dies erfassen konnte:
user> (with-out-str (printf "%s" :foo))
":foo"
with-out-str
hilfreich ist, wenn eine Bibliothek bietet nur eine Funktion, die Drucke zu STDOUT und Sie möchten stattdessen die Ausgabe erfassen. Ich habe Java-Bibliotheken durchsucht, die das tun.
Betrachten Sie die mit-out-str Makro weiter:
(with-out-str
(print x))
Oder nur Methode java.lang.String das Format nennen:
(String/format "%d" 3)
diese Java-Libs nicht zu clojure SCHREIB \ * out \*, werden sie? Sie müssten System/setOut mit einem PrintWriter, der die var verwendet, entführen. – gtrak