(str "I don't know what " (:name a) " eats."))
我知道这是用变量构造字符串的正确方法。但是有没有类似的方法呢?
(str "I dont know what %s eats." (:name a))
我试过了,这不是有效的语法,但是在 Clojure 中有类似的方法吗?
谢谢。
迭戈·巴什提到了format
,这是一个很好的答案。 您还可以使用cl-format
:
(clojure.pprint/cl-format nil "I don't know what ~a eats." "Joe")
使用 nil
作为第二个参数,这将返回一个字符串。 第二个参数的其他选项将导致字符串写入某处。
format
使用java.lang.String.format
. cl-format
是Common Lisp的format
的Clojure版本。 对于格式化字符串,它们的功能非常相似,但是有一些事情cl-format
可以做得很好,而 Clojure 的format
则没有。 简单示例--打印nil
:
(format "I don't know what %s eats." nil)
;=> "I don't know what null eats."
(clojure.pprint/cl-format nil "I don't know what ~a eats." nil)
;=> "I don't know what nil eats."
format
就是你想要的。例如:
(format "I don't know what %s eats." "Joe")
=> "I don't know what Joe eats."