clojure - 提供可设置的全局变量

标签 clojure

我需要为我的用户提供可设置的变量,例如 clojure AFAIK 提供的反射警告,它们没有在 clojure 端定义,这就是我们可以设置它们的原因。

问题是我的变量(所有配置的东西)在很多紧密的循环中使用,这就是为什么我不想让它们成为引用,因为它们可能在应用程序启动时被设置,并且在运行时没有变化,它们可能会被读取数百万次,因此让他们成为引用似乎是在浪费资源。

所以问题是我可以在我的情况下定义可设置的变量吗?

最佳答案

如果您希望所有线程都可以看到具有低开销的可设置全局状态,并且不需要任何 STM 事务来控制突变,我建议只使用原子:

(def some-global-value (atom 1))

读取和写入原子的开销极低。

关于clojure - 提供可设置的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6723953/

相关文章:

java - 将 java currentTimeMillis 转换为字节的 clojure vector

html - 在 hiccup 中更改一个 div 颜色

java - 使用 Leiningen 制作 uberjar 时如何针对特定版本的 java

clojure - Clojure 中的资源尝试

macros - 用 Clojure + Midje 重新定义宏操作

clojure - 仅加载多方法文件

clojure - 变量 *read-eval* 有什么作用?

function - ns 的参数是什么?

scala - 控制流的单子(monad)——序列、选择和迭代

haskell - Haskell 的 Foldable 和 Traversable 相当于 Clojure 中的一个序列吗?