【发布时间】:2014-01-15 01:43:46
【问题描述】:
我在研究 clojure 库时注意到一个可变字段被 ^:unsynchronized-mutable 注释。 Mutable 是可变的,但我不知道 unsynchronized 部分是什么意思,所以我阅读了docs,其中包含:
请注意,可变字段极难使用 正确,并且只存在于促进更高的建设 Clojure 中的级别构造,例如 Clojure 的引用类型 本身。它们仅适用于专家 - 如果语义和含义 :volatile-mutable 或 :unsynchronized-mutable 不会立即 对你来说很明显,你不应该使用它们。
我无法理解细微差别:是说在实践中我选择哪个可变性注释并不重要,还是人们应该完全忘记使用可变类型?
而且,为了好奇,在较低的抽象层次上,它们之间的语义区别是什么?
谢谢!
【问题讨论】:
-
这绝对是在说您应该不使用可变字段。
-
源示例的链接现已断开,但对于现在想知道警告来源的任何人,它位于
deftype的文档字符串中。
标签: clojure mutability