我为我的场景写了一个简单的例子。我创建了一个记录类型Switch
type State =
| On
| Off
with
member this.flip =
match this with
| On -> Off
| Off -> On
type Switch = { State : State }
然后我编写了一个函数来创建一个记录的副本,其中一个元素发生了变化
let flip switch = { switch with State = switch.State.flip }
我连续flip
多次写
let flipMany times switch =
[1 .. times]
|> List.fold (fun (sw : Switch) _ -> flip sw) switch
如果我想把这两个函数作为方法记录下来,我会写
type Switch =
{ State : State }
member this.flip =
{ this with State = this.State.flip }
member this.flipMany times =
[1 .. times]
|> List.fold (fun (sw : Switch) _ -> sw.flip) this
这样做有什么问题吗?是否同样有效?sw.flip
每次在不同的对象上调用函数感觉有点不舒服。
编辑:这只是一个简单的例子来解释我的问题。我的问题是如何将函数flipMany
与flipMany
记录中的方法进行比较。实现可能很幼稚,但在这两种情况下都是一样的。