我正在研究clojure库,当我注意到一个可变字段被注释为^:unsynchronized-mutable。易变是可变的,但我不知道是什么不同步部分的意思,所以我读了docs,其中包含:什么是语义含义:volatile-mutable与:unynchronized-mutable?
说明清楚,易变的领域是非常困难的正确使用 ,并且只存在于便于在Clojure 本身中构建更高级别的构造,如Clojure的参考类型。它们仅供专家使用 - 如果volatile-mutable或:unsynchronized-mutable的语义和影响 不是立即显示给您的 ,则不应使用它们。
我无法得到细微差别:它是否说在实践中,我选择哪个可变性注释或人们应该忘记使用可变类型?
而且,为了好奇,在较低的抽象层次上,它们之间的语义差异是什么?
谢谢!
这肯定是说你应该不** **使用可变领域。 – Chuck
现在,源代码示例的链接已被破坏,但对于任何人现在想知道警告的来源,它在['deftype'](http://clojuredocs.org/clojure.core/deftype)的文档字符串中。 – Mars