我是Clojure的新手。
我曾经使用swap!
和reset!
来更改标识符的值。
重置<!/强>
(def item (atom "Apple"))
user=> @item
Out Put ;; =&gt; “苹果”
(reset! item "Grapes")
user=> @item
Out Put ;; =&gt; “葡萄”
交换!
(def item (atom "Apple"))
user=> @item
Out Put ;; =&gt; “苹果”
(swap! item (#(str %) "PineApple"))
Out Put ;; =&gt; ClassCastException java.lang.String cannot be cast to clojure.lang.IFn
如何使用 swap!更改项目的值?
答案 0 :(得分:3)
(swap! item (fn [old] "PineApple"))
或:
(swap! item (fn [_] "PineApple"))
但是当你丢弃输入时,reset!
在这里更好:
(reset! item "PineApple")
答案 1 :(得分:0)
根据swap!
语法(swap! atom f)
。交换应该需要功能。
所以我只是试图以这种方式解决问题。
(swap! item (fn[s] "Banana"))
输出 ;; =&gt;香蕉