F# 3.0 での互換性に影響する変更点
このトピックでは、Visual Studio 2012 リリースについて F# コンパイラおよび F# 言語のバージョン 3.0 の最新の変更について説明します。
最新の変更の一覧
次の表に、F# 3.0 の最新の変更を示します。
最新の変更の領域 |
説明 |
---|---|
インデント |
不適切な一部のインデントが以前のバージョンの F# コンパイラでは誤って受け入れられていましたが、現在のバージョンではコンパイル エラーが発生します。インデント規則の詳細については、「コードのフォーマットに関するガイドライン (F#)」を参照してください。 |
ローカル変数である、構造体の引用符、メソッド、およびプロパティ |
現在のバージョンでは、構造体がローカル変数である場合、構造体のプロパティまたはメソッドを引用符で呼び出すと、エラーが発生します。以前のバージョンの F# では、この動作が許容されていました。
この要件を回避するには、次の例に示すように、ローカル変数のコピーを作成します。
|
不適切な null の等値 |
以前のバージョンでは、型の値が適切かどうかにかかわらず、= 演算子を使用して null 値を比較できました。適切な null は、型で許容される null 値です。不適切な null は、型に有効な値ではありません。現在の動作では、次のコードで示すように、= 演算子を使用して不適切な null を比較しようとすると、NullReferenceException がスローされます。
|
コメントおよび文字列 |
以前のバージョンでは、三重引用符で囲まれた文字列 (""" を使用する文字列) 内にある終了コメント トークン *) は、文字列の一部として解析されていました。現在のバージョンでは、このトークンは終了コメント文字として解析されます。したがって、前に指定できる次のコードは、現在のバージョンのエラーを生成します:
詳細については、「文字列 (F#)」を参照してください。 |
get アクセス操作子と set アクセス操作子の型が異なるプロパティ |
以前のバージョンの F# の F# コンパイラでは、型が一致しない get アクセス操作子メソッドと set アクセス操作子メソッドを誤って許可していました (たとえば、int 型の get アクセス操作子と文字列型の set アクセス操作子)。F# 3.0 では、コンパイラはこのような宣言をエラーとして報告します。 |