F#:如何在参数上声明和使用ByRef语义?

Jon*_*len 2 ado.net f# pass-by-reference

我正在使用输入/输出参数包装一些SQL存储过程.这当然意味着我必须做一些丑陋的事情,例如通过引用声明我的参数并使用mutables.

我怎么在F#中这样做?

Nol*_*rin 8

F#确实有一个byref参数.以下是MSDN页面中的示例:

type Incrementor(z) =
    member this.Increment(i : int byref) =
       i <- i + z
Run Code Online (Sandbox Code Playgroud)

可变变量也存在(尽管使用refmutable变量之间存在重要差异,其中任何一个都可用于许多相同的目的).关于此主题的MSDN页面提供了非常丰富的信息 - 包括讨论何时使用哪个关键字/构造.

参考变量示例:

// Declare a reference.
let refVar = ref 6

// Change the value referred to by the reference.
refVar := 50
Run Code Online (Sandbox Code Playgroud)

可变变量的示例:

// Declare a reference.
let mutable refVar = 6

// Change the value referred to by the reference.
refVar <- 50
Run Code Online (Sandbox Code Playgroud)

如您所见,赋值(以及检索)的语法也在两个构造之间不同.