在我的大多数 clojure 程序中......以及我看到的许多其他 clojure 程序中,原子中有某种全局变量:
(def *program-state*
(atom {:name "Program"
:var1 1
:var2 "Another value"}))
代码中偶尔会提到这种状态。
(defn program-name []
(:name @*program-state*))
阅读这篇文章http://misko.hevery.com/2008/07/24/how-to-write-3v1l-untestable-code/让我重新思考全局状态,但不知何故,即使我完全同意这篇文章,我认为在 atom 中使用 hash-map 是可以的,因为它提供了一个通用接口来操作全局状态数据(类似于使用不同的数据库来存储数据)。
我想对这个问题有一些其他的想法。