Clojure sprintf?

Существует printf. Он печатает напрямую на стандартный вывод.

Как насчет sprintf, который форматирует так же, как printf, но возвращает строку без побочных эффектов?

11
задан qrest 28 August 2010 в 19:05
поделиться

2 ответа

В Clojure он называется format и находится в clojure.core: printf эквивалентен (comp print format).

15
ответ дан 3 December 2019 в 03:03
поделиться

Вы должны проверить 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, которые делают это.

9
ответ дан 3 December 2019 в 03:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: