转换大型不可变消息

Rog*_*son 2 syntax f# functional-programming immutability

来自OOP背景,我在函数式编程中遇到了不可变对象/记录/消息概念的一些问题.

假设我通过一系列函数传递PurchaseOrder记录,其中每个函数应该添加或更新此记录中的数据.

在处理可变状态时,我只需设置传递消息的一些特定属性.

在处理不可变记录时,是否有一些设计技巧使事情变得更容易?复制每个字段以便只改变一个字段只是一种痛苦.

{ A = x.A ; B = x.B ; C = x.C ; D = x.D ; E = somethingnew; }
Run Code Online (Sandbox Code Playgroud)

我想尽可能地对数据进行分组是一种处理它的好方法,从而避免复制所有字段.对此还有其他方法或设计指南吗?

Joh*_*mer 9

你可以这样做

 let myRecord3 = { myRecord2 with Y = 100; Z = 2 }
Run Code Online (Sandbox Code Playgroud)

(来自MSDN记录页面的示例 - http://msdn.microsoft.com/en-us/library/dd233184.aspx)