Существует printf. Он печатает напрямую на стандартный вывод.
Как насчет sprintf, который форматирует так же, как printf, но возвращает строку без побочных эффектов?
В Clojure он называется format и находится в clojure.core
: printf
эквивалентен (comp print format)
.
Вы должны проверить cl-format
в clojure.pprint
lib. Это порт функции Common Lisp FORMAT. Он может делать то, чего не может printf
в Java, например, условные выражения, перебор последовательностей и т. д.
Чтобы ответить на ваш вопрос, с cl-форматом
, nil
вернет строку; первый аргумент true
будет выведен на STDOUT.
user> (cl-format nil "~{~R~^, ~}" [1 2 3 4])
"one, two, three, four"
Обратите внимание: если format
еще не существует в Clojure, вы также можете получить вывод из printf
Clojure следующим образом:
user> (with-out-str (printf "%s" :foo))
":foo"
with-out-str
полезно, когда библиотека предоставляет только функцию, которая печатает в STDOUT, и вместо этого вы хотите захватить вывод. Я сталкивался с библиотеками Java, которые делают это.