2016-03-24 20 views
1

bu hafta Clojure'ı başlattı ve kafamı bir şeyle duvara çarptı. Clojure'da hiçbir şeyin değişmez olduğunu anladığım halde, daha önce atandığı verileri kullanarak bir atomun anahtarının değerini nasıl güncelleyeceğimi anlamıyorum. Ben şunlardır ile mücadele ediyorumClojureScript'te Atom Anahtarının Güncellenmesi

2 basitleştirilmiş örnekler ...

(def test-db (atom 
{:name "jessie" :points 4})) 

(swap! test-db update :points (:points + 5)) 


(def another-test-db (atom 
{:name "roger" :nums [1 2 3]})) 

(swap! another-test-db update :nums (apply str :nums)) 

Herhangi bir yardım büyük takdir!

cevap

4

Zaten elinizdeki değere sahipsiniz, böylece kısmi işlevleri kullanabilirsiniz.

(swap! test-db update :points (partial + 5)) 
(swap! another-test-db update :nums (partial apply str)) 

Veya daha basit:

(swap! test-db update :points + 5) 
(swap! another-test-db update :nums str) 
+0

Bir şey değil. SO üzerinde en iyisi "teşekkür ederim" cevabı kabul ediyor. ;) – jmargolisvt

+0

Haha özür dilerim Bunu yapamayacağımı bilmiyordum - bu sadece dışarıdakiler içindi! Anladım. –

+3

'(swap! Test-db güncelleme: puan + 5)' yeterli –