这里是 clojurian 新手。有没有一种方法可以对对象的一部分进行数据化、“操作”(创建编辑副本)并仍然保留整个对象?
假设我有一个带有 getter 和 setter 的 java bean,所以是可变的。在我们的例子中,是一颗非常大的豆子。因此,我只想对某个特定算法(或我们案例中的一项服务)感兴趣的 bean 部分进行数据化,对该部分进行变异,并让原始的大 bean 保留该变异。
如果我可以对不可变 bean 的一部分进行数据化,并创建一个新的 bean,其中数据化部分发生更改,从而完全避免可变性,那就更好了。
在 clojure 中有没有一个好的方法可以做到这一点?可以吗?
所以我想说这是一个不平凡的问题,但似乎很多人都应该遇到这个问题。我想我几年前在 Reddit 上读过一些关于此的内容,但现在找不到了。
我希望在微服务上下文中做到这一点,其中每个服务都是一个 kafka 流服务 - 事件输入/操作部分事件/事件输出。
Clojure 默认情况下是不可变的。当你
datafy
一个对象时,你会取回数据,并且原始对象没有改变。
听起来您想对对象(或其数据化版本)执行一些计算,然后更新原始对象的部分并发出它?
所以,是的,如果您愿意,您可以选择仅更改原始对象的部分内容,具体取决于其 API。
如果您能更具体地说明您到底想做什么,我们也许可以提供更具体的建议?