2016-06-07 50 views
3

說我有初始設置爲0 我想初始化它,只有當它沒有被預先初始化的原子,clojure交換最好的方法是什麼?一個原子,如果它是零?

我現在擁有的一切:

(swap! atom #(if % % (initialize))) 

然而,這只是不看起來對我來說是慣用的。

必須有更可讀的方式嗎?

+0

'0'在clojure中是真實的,所以這永遠不會調用'initialize'。你確定你最初沒有把它設置爲「nil」嗎? – Lee

回答

6

通常,您可以使用fnil來避免首先進行初始化檢查。例如(swap! counts update word (fnil inc 0))就是說在計數中增加關鍵字的值,但是如果沒有值則使用0.

+0

我也會添加一個op的情況:'(swap!a(fni​​l identity(initialize)))' – leetwinski

相關問題