我要实现 transient
和 persistent!
在我的 Clojure deftype 中。据我所知,这意味着有另一个 deftype,TransientMyThing,实现必要的方法。到目前为止还好,但是这两个类需要相互了解才能返回彼此的实例。
我想我可以通过前向声明 Clojure 函数 make-transient 和 make-persistent,然后定义 deftype(通过引用该函数),然后使用现有类型实现这些函数来做到这一点,但对我来说似乎很恶心.有更好的选择吗?
编辑:这有效,但它仍然很糟糕。
最佳答案
在 Clojure 1.3 及更高版本中,一个稍微简单的解决方案是依赖 Clojure 为您的 deftype 创建的构造函数,->transient 和 ->persistent!。由于这些是函数,而不是宏,您可以向前声明它们。然后你可以使用它们,而不是你自己的 make-transient 和 make-persistent,你不必自己实现它们。
关于clojure - 在 Clojure 中相互引用 deftypes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6400070/