Clojure 将 var 嵌入 String,另一种方法?喜欢sprintf方式吗?
Clojure embed var to String, a alternative way? Like sprintf way?
(str "I don't know what " (:name a) " eats."))
我知道这是构造带有变量的字符串的正确方法。
但是有没有类似的方法呢?
(str "I dont know what %s eats." (:name a))
我试过了,这不是有效的语法,但 Clojure 中有类似的方法吗?
谢谢。
format
就是你想要的。例如:
(format "I don't know what %s eats." "Joe")
=> "I don't know what Joe eats."
Diego Basch 提到了 format
,这是一个很好的答案。您还可以使用 cl-format
:
(clojure.pprint/cl-format nil "I don't know what ~a eats." "Joe")
以nil
作为第二个参数,这个returns是一个字符串。第二个参数的其他选项将导致字符串被写入某处。
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."
(str "I don't know what " (:name a) " eats."))
我知道这是构造带有变量的字符串的正确方法。 但是有没有类似的方法呢?
(str "I dont know what %s eats." (:name a))
我试过了,这不是有效的语法,但 Clojure 中有类似的方法吗?
谢谢。
format
就是你想要的。例如:
(format "I don't know what %s eats." "Joe")
=> "I don't know what Joe eats."
Diego Basch 提到了 format
,这是一个很好的答案。您还可以使用 cl-format
:
(clojure.pprint/cl-format nil "I don't know what ~a eats." "Joe")
以nil
作为第二个参数,这个returns是一个字符串。第二个参数的其他选项将导致字符串被写入某处。
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."