2012-01-02 49 views
0

在Clojure中,該代碼與載體連接字符串時(println ["foo" "bar"])打印以下:雙引號Clojure中

[foo bar] 

雖然代碼(println (str "items: " ["foo" "bar"]))打印以下:

items: ["foo" "bar"] 

通知雙引號在矢量中的每個項目周圍。我怎樣才能避免這種情況?我需要一個連接字符串與向量的字符串表示,生產這種輸出功能:

items: [foo bar] 

我怎麼可以這樣用Clojure?

+1

Hi Otavio,我修改了我的答案 - 我希望它適合你! – Scott 2012-01-06 08:47:11

+0

謝謝你,@Scott! – 2012-01-06 10:42:50

回答

4

在你的榜樣,你並不真正需要的字符串連接調用str因爲println可以採取多個參數。下面的作品起到了很好下的Clojure 1.3.0

user=> (println "items: " ["foo" "bar"]) 
items: [foo bar] 
nil 

編輯

我重新閱讀的問題,我已經意識到,Otavio不僅打算使用的例子來打印說明他從str打印的問題,但他也打算將連接的字符串傳遞給println。

建議不要使用以下:Other Useful Functions and Macros

(println 
    (binding [*print-readably* nil] 
    (str "items: " ["foo" "bar"]))) 

輸出:從Clojure的網站下

items: [foo bar] 
nil 

參考

文檔 「:

」 .. 。*print-readably*(默認爲true)綁定到nil,這會導致字符串不使用引號或任何轉義字符編碼進行打印,也不會使用前導'\'或任何轉義字符編碼進行打印。 「

+0

[」foo「」bar「]向量被轉換成一個字符串」[\「foo \「\」bar \「]」「當你使用str函數 – patz 2012-01-02 22:18:16

1

這應該這樣做。

user=> (require 'clojure.string)   
nil 
user=> (clojure.string/join " " ["foo" "bar"]) 
"foo bar" 
user=> (str "[" (clojure.string/join " " ["foo" "bar"]) "]") 
"[foo bar]"