gpt4 book ai didi

clojure - 在 Clojure 中相互引用 deftypes

转载 作者:行者123 更新时间:2023-12-04 15:26:35 25 4
gpt4 key购买 nike

我要实现 transientpersistent!在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com