11
votes

Clojure Sprintf?

Il y a Printf. Il imprime directement sur stdout.

Que diriez-vous de Sprintf, qui format de la même manière que Printf, mais renvoie une chaîne sans effets secondaires?


0 commentaires

3 Réponses :


16
votes

in Clojure, il s'appelle format et réside dans clojure.core : printf est équivalent à (format d'impression de compression) .


0 commentaires

9
votes

Vous devez vérifier cl-format , dans le clojure.proprint lib. C'est un port de Format fonction. Il peut faire des choses que Java's printf ne peut pas faire, comme des conditionnels, itération de SEQS, etc.

Pour répondre à votre question, avec cl-format , un premier argument de nil retournera une chaîne; Un premier argument de true imprimera sur stdout. xxx

Notez que si format n'a pas déjà existé dans le clojure , vous pouvez également capturer la sortie de printf comme ceci: xxx

with-out-str est utile quand Une bibliothèque fournit uniquement une fonction imprime sur STDOUT et vous souhaitez capturer la sortie. Je rencontre des bibliothèques Java qui font cela.


1 commentaires

Ces Java Libs n'écriront pas à Clojure * out *, seront-ils? Vous auriez besoin de détourner le système / la configuration avec un imprimeur qui utilise le var.



5
votes

envisagez d'utiliser la macro avec STR-STR:

(String/format "%d" 3)


1 commentaires

N'est-ce pas (avec-out-str (impression x)) identique que (str x) ? :)