C#default
キーワードに相当するものを探しています。例:
public T GetNext()
{
T temp = default(T);
...
ありがとう
私はこれをブログで見つけました: " このC#コードはF#でどのように見えますか?(パート1:式とステートメント) "
C#には、指定された型のゼロ初期化値を返す「default」という演算子があります。
default(int)
有用性は限られています。最も一般的には、ジェネリックでdefault(T)を使用できます。 F#には、ライブラリ関数と同様の構造があります。
Unchecked.defaultof<int>
技術的に言えば、F#関数Unchecked.defaultof<'a>
は、C#のdefault
演算子と同等です。ただし、defaultof
はF#ではnsafeのものと見なされ、本当に必要な場合にのみ使用する必要があることに注意してください(null
を使用する場合と同様)。 、これもF#では推奨されていません)。
ほとんどの場合、option<'a>
タイプを使用することで、defaultof
の必要性を回避できます。これにより、値がまだ利用できないという事実を表すことができます。
ただし、ここにアイデアを示す簡単な例を示します。次のC#コード:
T temp = default(T);
// Code that may call: temp = foo()
if (temp == default(T)) temp = bar(arg)
return temp;
おそらくF#で次のように記述されます(命令型機能を使用):
let temp = ref None
// Code that may call: temp := Some(foo())
match !temp with
| None -> bar(arg)
| Some(temp) -> temp
もちろん、これは特定のシナリオによって異なり、場合によってはdefaultof
だけが実行できます。ただし、F#ではdefaultof
の使用頻度が低いことを指摘したいと思います。