数据化/更改部分,同时保留完整模型

问题描述 投票:0回答:1

这里是 clojurian 新手。有没有一种方法可以对对象的一部分进行数据化、“操作”(创建编辑副本)并仍然保留整个对象?

假设我有一个带有 getter 和 setter 的 java bean,所以是可变的。在我们的例子中,是一颗非常大的豆子。因此,我只想对某个特定算法(或我们案例中的一项服务)感兴趣的 bean 部分进行数据化,对该部分进行变异,并让原始的大 bean 保留该变异。

如果我可以对不可变 bean 的一部分进行数据化,并创建一个新的 bean,其中数据化部分发生更改,从而完全避免可变性,那就更好了。

在 clojure 中有没有一个好的方法可以做到这一点?可以吗?

所以我想说这是一个不平凡的问题,但似乎很多人都应该遇到这个问题。我想我几年前在 Reddit 上读过一些关于此的内容,但现在找不到了。

我希望在微服务上下文中做到这一点,其中每个服务都是一个 kafka 流服务 - 事件输入/操作部分事件/事件输出。

clojure
1个回答
0
投票

Clojure 默认情况下是不可变的。当你

datafy
一个对象时,你会取回数据,并且原始对象没有改变。

听起来您想对对象(或其数据化版本)执行一些计算,然后更新原始对象的部分并发出它?

所以,是的,如果您愿意,您可以选择仅更改原始对象的部分内容,具体取决于其 API。

如果您能更具体地说明您到底想做什么,我们也许可以提供更具体的建议?

© www.soinside.com 2019 - 2024. All rights reserved.