5

Duplicate definition of value fooF# コンパイラは、次のような定義を指す形式のコンパイル時エラーでコードを拒否することがあります。

let foo = ref 0

fooファイル全体に他の定義がないため、これは重複した定義ではありません。なぜこれが起こるのですか?

4

1 に答える 1

8

get_fooこれは、関数も定義すると発生します。

let get_foo() = !foo

の定義はfoo独自のget_fooメソッドを実装するプロパティを作成するため、衝突が発生します。F# コンパイラはこれに混乱し、偽の「重複定義エラー」を生成します。

このバグは Microsoft に報告されており、修正に取り組んでいますが、F# の次の (VS11) リリースには含まれません。

于 2012-05-14T09:07:17.260 に答える