Nullable<'a> を使用する方法と、nullable int を表すために Option<'a> を使用する方法のどちらがより慣用的ですか?
2 に答える
Option は、F# コードでははるかに慣用的です。
で使用すると、はるかに優れた構文にmatch
なり、標準ライブラリから大量のサポートが得られます。
ただし、C# またはその他の言語からコードにアクセスする場合はNullable
、C# で使いやすいインターフェイスを公開する必要があります。
John が言ったようにOption<T>
、F# では間違いなくより慣用的な型です。私は確かにオプションをデフォルトの選択肢として使用します。Option
モジュールは多くの便利な機能を提供し、パターン マッチングはオプションでうまく機能し、F# ライブラリは通常、オプションで動作するように設計されています。
とはいえ、nullable を使用したい場合は 2 つあります。
オプションの値の配列を作成する場合 -
Nullable<T>
は値型 (一種) であり、配列を作成するとNullable<T>[]
、連続したメモリ ブロックとして割り当てられます。一方、オプションは参照型でありoption<T>[]
、ヒープ割り当てオブジェクトへの参照の配列になります。いくつかの計算を記述し、欠損値を伝播する必要がある場合 - F# 3.0 には、
Microsoft.FSharp.Linq.NullableOperators
null 許容値を処理するためのさまざまな演算子を実装するモジュールがあります ( MSDN のドキュメントを参照)。これにより、次のように記述できます。let one = Nullable(1) let two = Nullable(2) // Add constant to nullable, then compare value of two nullables (one ?+ 2) ?>=? two