1

Nullable<'a> を使用する方法と、nullable int を表すために Option<'a> を使用する方法のどちらがより慣用的ですか?

4

2 に答える 2

5

Option は、F# コードでははるかに慣用的です。

で使用すると、はるかに優れた構文にmatchなり、標準ライブラリから大量のサポートが得られます。

ただし、C# またはその他の言語からコードにアクセスする場合はNullable、C# で使いやすいインターフェイスを公開する必要があります。

于 2013-10-02T03:22:55.807 に答える
5

John が言ったようにOption<T>、F# では間違いなくより慣用的な型です。私は確かにオプションをデフォルトの選択肢として使用します。Optionモジュールは多くの便利な機能を提供し、パターン マッチングはオプションでうまく機能し、F# ライブラリは通常、オプションで動作するように設計されています。

とはいえ、nullable を使用したい場合は 2 つあります。

  • オプションの値の配列を作成する場合 -Nullable<T>は値型 (一種) であり、配列を作成するとNullable<T>[]、連続したメモリ ブロックとして割り当てられます。一方、オプションは参照型でありoption<T>[]、ヒープ割り当てオブジェクトへの参照の配列になります。

  • いくつかの計算を記述し、欠損値を伝播する必要がある場合 - F# 3.0 には、Microsoft.FSharp.Linq.NullableOperatorsnull 許容値を処理するためのさまざまな演算子を実装するモジュールがあります ( MSDN のドキュメントを参照)。これにより、次のように記述できます。

    let one = Nullable(1)
    let two = Nullable(2)
    
    // Add constant to nullable, then compare value of two nullables
    (one ?+ 2) ?>=? two
    
于 2013-10-02T03:28:45.980 に答える