在这个Clojure doto宏示例中打印关键字的目的是什么?

时间:2013-07-30 15:04:00

标签: clojure

我一直在看这个Clojure doto macro example from ClojureDocs,我无法弄清楚:printed println:printed关键字的用途。

当我在REPL中输入示例时,它会按照我的预期打印出HashMap,只需在HashMap之后显示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}

,我试着看看我会得到什么
:printed

这个打印相同的东西,但使HashMap没有doto。鉴于此结果,#<HashMap {b=2, a=1}> {"b" 2, "a" 1} :printed 示例不应该给出类似的结果:

:printed

{{1}}关键字在做什么?

1 个答案:

答案 0 :(得分:2)

:printed只需将“:printed”添加到由println打印的字符串中。 它不会影响哈希映射。

(println "Bingo" :printed)
=> Bingo :printed