我一直在看这个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}}关键字在做什么?
答案 0 :(得分:2)
:printed
只需将“:printed”添加到由println
打印的字符串中。
它不会影响哈希映射。
(println "Bingo" :printed)
=> Bingo :printed