什么是clojure交换的最佳方式!一个原子,如果它是零?

Lov*_*ing 4 clojure

假设我有一个原子初始设置为0.我想初始化它,只有它以前没有初始化,

我现在拥有的:

(swap! atom #(if % % (initialize)))
Run Code Online (Sandbox Code Playgroud)

但是,这对我来说并不像是惯用语.

必须有更可读的方式吗?

Tim*_*ley 7

通常您可以使用fnil以避免首先需要进行初始化检查.例如(swap! counts update word (fnil inc 0)),在计数中增加关键字的值,但如果没有值,则使用0.