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