Nullable型Null許容型(Nullable type)は、一部のプログラミング言語の機能であり、 データ型の通常の値の代わりに、値を特殊な値 NULL に設定できる。静的に型付けされた言語では、Nullable型はOption型英語版だが、動的に型付けされた言語(値には型があるが変数にはない)では、単一のnull値を持つことで同等の動作が提供される。

NULLは、 SQLにおけるNULLのように、返されなかった関数やデータベースのフィールドの欠落などから、欠落した値または無効な値を表すためによく使用される。

整数ブーリアン型などのプリミティブ型は通常nullにすることはできないが、対応するNullable型(Nullable整数およびNullableブーリアン型)はNULL値をとることができる。

編集

整数変数は整数を表すが、0 (ゼロ) は特殊なケースである。これは、多くのプログラミング言語で0が "false" を意味する場合があるためである。また、これは変数が空であるという概念が明示されない。それは多くの状況では必要になる。この必要性は、Nullable型で実現できる。C#2.0などのプログラミング言語では、たとえば、Nullable整数は疑問符を用いて int? x で宣言できる[1]C# 1.0のようなプログラミング言語では、Nullable型は外部ライブラリ[2]によって新しい型として定義される (例: NullableInteger、NullableBoolean)[3]

ブール変数は効果をより明確にする。その値は "true" または "false" のいずれかだが、Nullableブール値には "undecided"(未決定)の表現も含まれる場合がある。ただし、そのような変数を含む論理演算の解釈または処理は、言語によって異なる。

nullポインタとの比較編集

対照的に、ほとんどの一般的な言語では、デフォルトでオブジェクトポインタNULLに設定できる。これは、ポインタまたは参照がどこも指さないこと、オブジェクトが割り当てられないこと(変数がオブジェクトを指さないこと)を意味する。Nullable参照は、1965年にアントニー・ホーアによってAlgol W英語版言語の一部として発明された。ホーアは後に彼の発明を「10億ドルの間違い」と表現した[4]。これは、NULLの可能性があるオブジェクトポインタは、ユーザがポインタを使用する前に確認する必要があり、オブジェクトポインタがNULLの場合を処理するために特定のコードが必要になるためである。

Javaには、Integer、Boolean、Floatなどのスカラー値に対応するクラスがある。自動ボックス化(オブジェクトと値の間の使用法に基づく自動変換)と組み合わせると、スカラー値にnullを使用できる変数を効果的に使用できる[要出典][引用が必要]

Option型との比較編集

Nullable型の実装は通常、Nullオブジェクトパターン英語版に従う。

Nullable型の概念を拡張する、より一般的で正式な概念がある。これは、例外的なケースの明示的な処理を強制するOption型からのものである。Option型の実装は、通常、特殊なケースパターンに従う[5]

言語ごとのサポート編集

次のプログラミング言語は、Nullable型をサポートしている。

ネイティブでのnullサポートのある静的型付け言語には、次のものがある。

ライブラリがnullをサポートする静的型付け言語には、次のものがある。

nullを含む動的型付け言語には、次のものがある。

  • Perl: スカラー変数のデフォルトではundefあり、 undefを代入できる
  • PHP: NULL型、is_null()メソッド、バージョン7.1のネイティブnull可能型[8]
  • Python: None値がある[9]
  • Ruby: nil値とNilClassタイプ
  • JavaScript: null値がある

脚注編集

[脚注の使い方]

関連項目編集