9

Chris Smith のProgramming F# 3.0の例を使用します。

let invalidUseOfMutable() =
    let mutable x = 0
    let incrementX() = x <- x + 1
    incrementX()
    x;;

これは期待どおりに失敗します:

エラー FS0407: 可変変数 'x' が無効な方法で使用されています。ミュータブル変数は、クロージャによってキャプチャできません。

関数の本体を FSharp Interactive にカット アンド ペーストします。

let mutable x = 0
let incrementX() = x <- x + 1
incrementX()
x;;

そしてそれはうまくいきます!

値: int = 1

なんで?

4

1 に答える 1