如何通过引用将对象的属性传递给函数并将其变异?
这是我想做的事的一个例子:
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无法获取从地址返回的值的地址 表达。将返回值分配给让前值 取地址。
我确定此错误是显而易见的。不幸的是,我仍然不确定如何解决它。我确实尝试引用了一些documentation。但是,我仍然被困住。
有什么建议吗?
答案 0 :(得分:2)
可能只有公共领域可以工作:
type MyClass() =
[<DefaultValue>] val mutable Prop : (uint8)
let myInstance = MyClass()
update &myInstance.Prop
答案 1 :(得分:1)
通过getref和setter进行获取
type X() =
let mutable p = 0
member x.P with get() = &p and set(v: int byref) = p <- v
let update (p: int byref) = p <- 99
let x = X()
update &x.P