好吧,我开始明白F#能够管理引用(某种类似C++的引用).这使得有可能改变函数中传递的参数值,并使程序员能够返回多个值.不过这是我需要知道的:
Ref关键字:该关键字ref用于从值创建对推断类型的值的引用.所以
let myref = ref 10
Run Code Online (Sandbox Code Playgroud)
这意味着F#将创建一个类型的对象Ref<int>(在可变字段中)我的int 10.
好.所以我假设它ref用于创建该Ref<'a>类型的实例.这是对的吗?
访问值:为了访问存储在引用中的值,我可以这样做:
let myref = ref 10
let myval = myref.Value
let myval2 = !myref
Run Code Online (Sandbox Code Playgroud)
虽然:=操作员只是让我编辑这样的值:
let myref = ref 10
myref.Value <- 30
myref := 40
Run Code Online (Sandbox Code Playgroud)
所以!(Bang)取消引用我的参考.并:=编辑它.我想这也是正确的.
&运营商:这家运营商做什么?它是否适用于参考类型?不,我想它必须应用于一个可变值,这会返回什么?参考资料?地址?如果使用交互式:
let mutable mutvar = 10;;
&a;;
Run Code Online (Sandbox Code Playgroud)
最后一行抛出错误,所以我不明白&操作符是什么.
ByRef:怎么样byref?这对我来说非常重要,但我意识到我不理解它.我知道它用于参数传递的功能.当他想要传递的值可以被编辑时,人们会使用byref(这有点违背了函数式语言的哲学,但f#不仅仅是这个).考虑以下:
let myfunc (x: int byref) =
x <- x + 10
Run Code Online (Sandbox Code Playgroud)
这很奇怪.我知道如果你有一个引用let myref …