例如,以下是不允许的,我不知道为什么:
> let f () =
let f2 (a : byref<int>) =
()
let mutable a = 0
f2 &a;;
Run Code Online (Sandbox Code Playgroud)
我的猜测是,byref可能是对堆栈变量的可变引用,如果f2决定将其存储在某个地方,它可能会超出范围.或者是别的什么?
kvb*_*kvb 10
.NET类型系统不允许将byref类型用作泛型类型参数(例如,您无法创建List<byref<int>>
).由于(第一类)F#函数实际上是该FSharpFunc<_,_>
类型的实例,这意味着F#函数也不能在其域或范围中使用byref.
归档时间: |
|
查看次数: |
160 次 |
最近记录: |