【发布时间】:2025-12-28 15:40:11
【问题描述】:
我正在玩一些clojure 中的原子。我有一个atom 指向lazy-seq。在另一段代码中,我想将原子的值更新为对序列执行next 的结果,但鉴于swap! 和reset! 都返回更新的值,执行永远不会结束。
我发现我总是可以将对swap!、reset! 的调用包装在一个do 语句中,然后返回nil,但我想知道这是多么地道,或者是否有替代解决方案。
不终止:
(def x (atom (range)))
(swap! x next)
终止
(def x (atom (range)))
(do (swap! x next) nil)
(first @x) ;1
(do (swap! x next) nil)
(first @x) ;2
【问题讨论】:
标签: clojure atomic lazy-sequences