2013-07-30 20 views
0

我一直在看這個Clojure doto macro example from ClojureDocs,我無法弄清楚最終println:printed關鍵字的用途。在這個Clojure doto宏示例中,printed關鍵字的用途是什麼?

當我在REPL進入例子,它打印出來,因爲我所期望的HashMap的,只是HashMap的後顯示的:printed

user=> (doto (java.util.HashMap.) (.put "a" 1) (.put "b" 2) (println :printed)) 
#<HashMap {b=2, a=1}> :printed 
{"b" 2, "a" 1} 

我想通println需要一個佔位符,這樣它就知道等待來自doto宏的內容。於是,我就看到我會得到,如果我省略:printed

user=> (doto (java.util.HashMap.) (.put "a" 1) (.put "b" 2) (println)) 
#<HashMap {b=2, a=1}> 
{"b" 2, "a" 1} 

這一個打印同樣的事情,但使得HashMap中沒有:printed在它旁邊。鑑於這一結果,應該不是doto例子給這樣的事情:

#<HashMap {b=2, a=1}> 
{"b" 2, "a" 1} :printed 

什麼是:printed關鍵字在做什麼?

回答

2

:printed只是將「:打印」添加到println打印的字符串中。 它不影響哈希映射。

(println "Bingo" :printed) 
=> Bingo :printed 
相關問題