Clojure sprintf?

发布于 2024-09-16 06:09:30 字数 79 浏览 3 评论 0原文

有printf.它直接打印到标准输出。

sprintf 怎么样,它的格式与 printf 相同,但返回一个没有副作用的字符串?

There is printf. It prints directly to stdout.

How about sprintf, which formats the same way as printf, but returns a string with no side-effects?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

染墨丶若流云 2024-09-23 06:09:30

在 Clojure 中,它称为 format 并驻留在 < code>clojure.core:printf 相当于(comp print format)

In Clojure it's called format and resides in clojure.core: printf is equivalent to (comp print format).

ゞ花落谁相伴 2024-09-23 06:09:30

您应该查看 clojure.pprint 库中的 cl-format。它是 Common Lisp 的 FORMAT 函数的端口。它可以做 Java 的 printf 不能做的事情,比如条件、迭代 seq 等。

要回答你的问题,使用 cl-format ,第一个参数 < code>nil 将返回一个字符串;第一个参数 true 将打印到 STDOUT。

user> (cl-format nil "~{~R~^, ~}" [1 2 3 4])
"one, two, three, four"

请注意,如果 Clojure 中尚不存在 format,您还可以捕获 Clojure 的 printf 的输出,如下所示:

user> (with-out-str (printf "%s" :foo))
":foo"

with-out-str当库仅提供打印到 STDOUT 的函数并且您想要捕获输出时,这很有用。我遇到过执行此操作的 Java 库。

You should check out cl-format, in the clojure.pprint lib. It's a port of Common Lisp's FORMAT function. It can do things that Java's printf can't do, like conditionals, iterating over seqs, etc.

To answer your question, with cl-format, a first argument of nil will return a string; a first argument of true will print to STDOUT.

user> (cl-format nil "~{~R~^, ~}" [1 2 3 4])
"one, two, three, four"

Note that if format didn't already exist in Clojure, you could also capture the output from Clojure's printf like this:

user> (with-out-str (printf "%s" :foo))
":foo"

with-out-str is helpful when a library only provides a function that prints to STDOUT and you want to capture the output instead. I've run across Java libraries that do this.

别低头,皇冠会掉 2024-09-23 06:09:30

考虑使用 with-out-str 宏:

(with-out-str
    (print x))

或者只调用 java.lang.String 的 format 方法:

(String/format "%d" 3)

Consider using the with-out-str macro:

(with-out-str
    (print x))

Or just call java.lang.String's format method:

(String/format "%d" 3)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文