f# - 如何通过引用将对象的属性传递给函数并对其进行变异?
问题描述
如何通过引用将对象的属性传递给函数并对其进行变异?
这是我想做的一个例子:
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 值。
我确信这个错误是显而易见的。不幸的是,我仍然不确定如何解决它。我确实尝试参考一些文档。但是,我仍然卡住了。
有什么建议么?
解决方案
可能只有公共领域可以工作:
type MyClass() =
[<DefaultValue>] val mutable Prop : (uint8)
let myInstance = MyClass()
update &myInstance.Prop
推荐阅读
- java - 如果 Android API 级别低于 26,如何将存储访问框架与 MediaMuxer 一起使用
- python - “Doc2Vec”对象没有属性“get_latest_training_loss”
- python - sklearn - 为什么gridsearch cv参数的分数比默认值差?
- python - 如何通过烧瓶检查 db sqlite 中的布尔值是否为真
- excel - 有没有办法使用字符串引用范围变量?
- java - Spring`RestController`方法注释`@Transactional`,但是“当前没有事务处于活动状态”?
- python-3.x - Google App Engine 上的 run_local_server() 不起作用(errno98 地址已在使用中)
- javascript - 如何正确访问和输出 API 对象和数组数据?
- python - 如何使用python保存内存、pid和进程
- docker - Dockerfile ENTRYPOINT 中的 exec 是什么,为什么一个进程在没有它的情况下启动了两次?