我希望制作一个实现Clojure Hashmaps的clojure deftype。我意识到我可以实现Clojure接口来使我的deftype Hashable和Sequable,但我需要包括什么才能使我的deftype与Clojure STM一起玩得很好,以便我能做到:
(def a (ref (MyType.)))
然后以STM安全方式执行诸如conj和cons之类的dosync操作?
答案 0 :(得分:2)
您的问题已经通过记录解决,它们是您描述的类型/类,但具有Hashable和Sequable等接口(
)。你可以把你的记录放在ref中,就像任何其他的hashmap一样。这里没有看到问题。
答案 1 :(得分:1)
(def a (ref MyType))
没有多大意义,因为您将课程MyType
放在参考中。
您放入ref的类型理想情况下应该是不可变类型,因为dosync
的主体应该没有副作用。