相关疑难解决方法(0)

了解byref,ref和&

好吧,我开始明白F#能够管理引用(某种类似C++的引用).这使得有可能改变函数中传递的参数值,并使程序员能够返回多个值.不过这是我需要知道的:

  1. Ref关键字:该关键字ref用于从值创建对推断类型的值的引用.所以

    let myref = ref 10
    
    Run Code Online (Sandbox Code Playgroud)

    这意味着F#将创建一个类型的对象Ref<int>(在可变字段中)我的int 10.

    好.所以我假设它ref用于创建该Ref<'a>类型的实例.这是对的吗?

  2. 访问值:为了访问存储在引用中的值,我可以这样做:

    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)取消引用我的参考.并:=编辑它.我想这也是正确的.

  3. &运营商:这家运营商做什么?它是否适用于参考类型?不,我想它必须应用于一个可变值,这会返回什么?参考资料?地址?如果使用交互式:

    let mutable mutvar = 10;;
    &a;;
    
    Run Code Online (Sandbox Code Playgroud)

    最后一行抛出错误,所以我不明白&操作符是什么.

  4. ByRef:怎么样byref?这对我来说非常重要,但我意识到我不理解它.我知道它用于参数传递的功能.当他想要传递的值可以被编辑时,人们会使用byref(这有点违背了函数式语言的哲学,但f#不仅仅是这个).考虑以下:

    let myfunc (x: int byref) =
        x <- x + 10
    
    Run Code Online (Sandbox Code Playgroud)

    这很奇怪.我知道如果你有一个引用let myref …

.net f# reference parameter-passing byref

24
推荐指数
1
解决办法
5027
查看次数

标签 统计

.net ×1

byref ×1

f# ×1

parameter-passing ×1

reference ×1