当我注意到一个可变字段用^:unsynchronized-mutable注释时,我正在研究一个 clojure 库。Mutable 是可变的,但我不知道非同步部分是什么意思,所以我阅读了文档,其中包含:
请注意,可变字段极难正确使用,并且仅用于促进在 Clojure 本身中构建更高级别的构造,例如 Clojure 的引用类型。它们仅供专家使用 - 如果 :volatile-mutable 或 :unsynchronized-mutable 的语义和含义对您来说不是很明显,那么您不应该使用它们。
我无法理解细微差别:是说在实践中我选择哪种可变性注释并不重要,还是人们应该完全忘记使用可变类型?
而且,为了好奇,在较低的抽象层次上,它们之间的语义区别是什么?
谢谢!