3
說我有初始設置爲0 我想初始化它,只有當它沒有被預先初始化的原子,clojure交換最好的方法是什麼?一個原子,如果它是零?
我現在擁有的一切:
(swap! atom #(if % % (initialize)))
然而,這只是不看起來對我來說是慣用的。
必須有更可讀的方式嗎?
說我有初始設置爲0 我想初始化它,只有當它沒有被預先初始化的原子,clojure交換最好的方法是什麼?一個原子,如果它是零?
我現在擁有的一切:
(swap! atom #(if % % (initialize)))
然而,這只是不看起來對我來說是慣用的。
必須有更可讀的方式嗎?
通常,您可以使用fnil
來避免首先進行初始化檢查。例如(swap! counts update word (fnil inc 0))
就是說在計數中增加關鍵字的值,但是如果沒有值則使用0.
我也會添加一個op的情況:'(swap!a(fnil identity(initialize)))' – leetwinski
'0'在clojure中是真實的,所以這永遠不會調用'initialize'。你確定你最初沒有把它設置爲「nil」嗎? – Lee