Unit 型
unit
型は、特定の値を持たないことを示す型です。unit
型には値が 1 つだけあり、他の値が存在しない場合や不要な場合のプレースホルダーとして機能します。
構文
// The value of the unit type.
()
解説
すべての F# 式は、値に評価される必要があります。 目的の値を生成しない式の場合は、型 unit
の値が使用されます。 unit
型は、C# や C++ などの言語の void
型に似ています。
unit
型には単一の値があり、その値はトークン ()
によって示されます。
F# プログラミングで unit
型の値は、言語の構文によって値が必要とされてはいるものの、何ら値が必要なく、望ましくもない場合に、場所を保持する目的でよく使用されます。 例として、printf
関数の戻り値が挙げられます。 printf
操作の重要なアクションは関数内で発生するため、関数は実際の値を返す必要はありません。 そのため、戻り値の型は unit
となります。
一部のコンストラクトでは unit
の値が想定されています。 たとえば、モジュールの最上位レベルの do
バインドまたはコードは、unit
の値に評価されると想定されます。 コンパイラでは、次の例に示すように、モジュールの最上位レベルの do
バインドまたはコードが、使用されていない unit
の値以外の結果を生成した場合に警告を報告します。
let function1 x y = x + y
// The next line results in a compiler warning.
function1 10 20
// Changing the code to one of the following eliminates the warning.
// Use this when you do want the return value.
let result = function1 10 20
// Use this if you are only calling the function for its side effects,
// and do not want the return value.
function1 10 20 |> ignore
この警告は、関数型プログラミングの特性です。他の .NET プログラミング言語では表示されません。 関数に副作用がない純粋な関数型プログラムでは、最終的な戻り値は関数呼び出しの唯一の結果となります。 そのため、結果が無視された場合は、プログラミング エラーを示している可能性があります。 F# は純粋な関数型プログラミング言語ではありませんが、できる限り関数型プログラミング スタイルに従うことをお勧めします。
関連項目
.NET