有一个printf函数,它直接将输出打印到标准输出流(stdout)。
sprintf函数如何呢?它与printf以相同的方式格式化字符串,但不会产生任何副作用,并返回一个字符串。
clojure.pprint
库中的cl-format
,它是Common Lisp的FORMAT函数的一个端口。它可以做Java的printf
不能做的事情,比如条件语句、遍历序列等。cl-format
,第一个参数为nil
将返回一个字符串;第一个参数为true
将打印到STDOUT。user> (cl-format nil "~{~R~^, ~}" [1 2 3 4])
"one, two, three, four"
format
,您也可以像这样捕获Clojure的printf
输出:user> (with-out-str (printf "%s" :foo))
":foo"
with-out-str
在库只提供将输出打印到STDOUT的函数时非常有用,可以使用它来捕获输出。我曾经遇到过这样的Java库。
(with-out-str
(print x))
或者只需调用java.lang.String的format方法:
(String/format "%d" 3)
(with-out-str (print x))
” 不就等同于 “(str x)
” 吗? :) - bfontaine