欢迎!请查阅关于页面以获取更多有关如何使用本网站的信息。
(在此处请求http://groups.google.com/group/clojure/browse_thread/thread/119311e89fa46806/4903ce25ff6deaa6#4903ce25ff6deaa6)
总体思路是在事务内部声明不可变性,当在提交时不可变性不再保持,事务将重新尝试。因此,它既可以作为一种软保障,也可以指定“部分兼容”的操作。因此,它将启用更粗糙的引用。
请参阅附件中的快速原型。
用户代码将如下所示
`(invariant (@world :key))(commute world update-in [:key] val-transform-fn)`
`
这意味着只有当(@world :key)在事务中和提交点返回相同的值时,才执行commute操作。
评论者:importer
从http://www.assembla.com/spaces/clojure/tickets/213 转换而来附件invariants.patch - https://www.assembla.com/spaces/clojure/documents/dd4kUS3MWr3QvMeJe5aVNr/download/dd4kUS3MWr3QvMeJe5aVNr