在寻求精益函数式编程的过程中,我注意到在使用嵌套不可变数据结构时参数列表开始变得过多的情况。这是因为在更新对象状态时,您还需要更新数据结构中的所有父节点。请注意,这里我使用“更新”来表示“返回具有适当更改的新不可变对象(immutable对象)”。
例如我发现自己编写的那种函数(Clojure 示例)是:
(defn update-object-in-world [world country city building object property value]
(update-country-in-world world
(update-city-in-country country
(update-building-in-city building
(update-object-in-building object property value)))))
更新一个简单属性的所有这些都非常难看,但此外调用者必须组装所有参数!
通常在处理函数式语言中的不可变数据结构时,这必须是一个相当普遍的要求,那么是否有一个好的模式或技巧来避免这种情况,我应该使用它来代替?
最佳答案
尝试
(update-in
world
[country city building]
(update-object-in-building object property value))
关于language-agnostic - 用函数式语言管理对嵌套不可变数据结构的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3140050/