0

我一直在看 ClojureDocs 中的这个 Clojure doto 宏示例,但我无法弄清楚:printedfinal 中关键字的用途println

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

这个打印相同的东西,但使 HashMap 没有:printed旁边。鉴于此结果,该doto示例不应该给出如下内容:

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

:printed关键字在做什么?

4

1 回答 1

2

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

(println "Bingo" :printed)
=> Bingo :printed
于 2013-07-30T15:20:54.250 回答