来自OOP背景,我在函数式编程中遇到了不可变对象/记录/消息概念的一些问题。
假设我通过一系列函数传递PurchaseOrder记录,其中每个函数都应该添加或更新此记录中的数据。
在处理可变状态时,我只需设置传递消息的一些特定属性。
在处理不可变记录时,是否有一些设计技巧使事情变得更容易? 复制每个字段只是为了改变一个字段只是一种痛苦。
{ A = x.A ; B = x.B ; C = x.C ; D = x.D ; E = somethingnew; }
我认为尽可能分组数据是处理数据的好方法,因此避免复制所有字段。 对此还有其他方法或设计指南吗?
答案 0 :(得分:9)
你可以做到
let myRecord3 = { myRecord2 with Y = 100; Z = 2 }
(来自MSDN记录页面的示例 - http://msdn.microsoft.com/en-us/library/dd233184.aspx)
答案 1 :(得分:0)