F #: Как мне объявить и использовать семантику ByRef для параметров? - PullRequest
2 голосов
/ 03 июня 2009

Я обертываю некоторые хранимые процедуры SQL с параметрами ввода / вывода. Это, конечно, означает, что я должен делать некрасивые вещи, например объявлять свои параметры как ссылки и использовать изменяемые таблицы

Как бы я это сделал в F #?

1 Ответ

8 голосов
/ 03 июня 2009

F # действительно имеет byref параметр . Вот пример со страницы MSDN:

type Incrementor(z) =
    member this.Increment(i : int byref) =
       i <- i + z

Также существуют изменяемые переменные (хотя есть важное различие между использованием ref и mutable переменных, которые могут использоваться для многих из тех же целей). Страница MSDN на эту тему очень информативна, включая обсуждение того, когда использовать какое ключевое слово / конструкцию.

Пример ссылочных переменных:

// 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

Как вы можете видеть, синтаксис для присваивания (а также извлечения) также различен для двух конструкций.

...