首页 > 解决方案 > 如何通过引用将对象的属性传递给函数并对其进行变异?

问题描述

如何通过引用将对象的属性传递给函数并对其进行变异?

这是我想做的一个例子:

let mutable myProperty = (uint8) 0
...
member x.MyProperty with get() =  myProperty
                    and  set(v) = myProperty <- v

然后我想通过引用函数调用来更新该属性:

let update(property:uint8 byref) =
    property <- (uint8) 99

update(&x.MyProperty) // Doesn't compile

错误 FS3236 无法获取表达式返回值的地址。在获取地址之前,将返回的值分配给一个 let-bound 值。

我确信这个错误是显而易见的。不幸的是,我仍然不确定如何解决它。我确实尝试参考一些文档。但是,我仍然卡住了。

有什么建议么?

标签: f#

解决方案


可能只有公共领域可以工作:

type MyClass() =
    [<DefaultValue>] val mutable Prop : (uint8)

let myInstance = MyClass()
update &myInstance.Prop

推荐阅读