小编ema*_*cas的帖子

clojure中的惯用惰性原子

我正在玩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)

atomic clojure lazy-sequences

4
推荐指数
1
解决办法
390
查看次数

标签 统计

atomic ×1

clojure ×1

lazy-sequences ×1