我正在玩clojure中的原子.我atom
指着一个lazy-seq
.在另一个代码位我想更新原子做的结果值next
的序列,但考虑到两者swap!
并reset!
返回更新后的值执行永远不会结束.我想通了,我总能包裹调用swap!
,reset!
在do语句,然后返回nil
,但我想知道如何惯用这是或者是否有一个替代的解决方案做到这一点.
不终止:
(def x (atom (range)))
(swap! x next)
Run Code Online (Sandbox Code Playgroud)
终止
(def x (atom (range)))
(do (swap! x next) nil)
(first @x) ;1
(do (swap! x next) nil)
(first @x) ;2
Run Code Online (Sandbox Code Playgroud)