【发布时间】:2010-10-31 02:05:32
【问题描述】:
我正在用输入/输出参数包装一些 SQL 存储过程。这当然意味着我必须做一些丑陋的事情,比如通过引用声明我的参数并使用可变变量。
我将如何在 F# 中执行此操作?
【问题讨论】:
标签: ado.net f# pass-by-reference
我正在用输入/输出参数包装一些 SQL 存储过程。这当然意味着我必须做一些丑陋的事情,比如通过引用声明我的参数并使用可变变量。
我将如何在 F# 中执行此操作?
【问题讨论】:
标签: ado.net f# pass-by-reference
F# 确实有一个byref parameter。以下是 MSDN 页面中的示例:
type Incrementor(z) =
member this.Increment(i : int byref) =
i <- i + z
可变变量也存在(尽管使用ref 和mutable 变量之间存在重要区别,两者都可以用于许多相同的目的)。关于这个主题的MSDN page 提供了非常丰富的信息 - 包括关于何时使用哪个关键字/结构的讨论。
引用变量示例:
// Declare a reference.
let refVar = ref 6
// Change the value referred to by the reference.
refVar := 50
可变变量示例:
// Declare a reference.
let mutable refVar = 6
// Change the value referred to by the reference.
refVar <- 50
如您所见,两种结构的赋值(以及检索)语法也不同。
【讨论】: