null 2014/09/12
null
みたいな類の各プログラミング言語での取り扱いの比較。
C言語 2015/01/08
NULL
というのがある。0
と同じで、ポインタに0を代入するのと NULL
を代入するのはたぶん同じで、ポインタがなにも指していないことを意味するのに使われる。
Java 2014/09/12
null
というのがあり、任意の参照型になりえる。参照型なので、int
などのプリミティブ型にnull
を使うことはできない。
一度も代入されていないローカル変数を参照しようとすると、
variable x might not have been initialized
というようなコンパイルエラーになり、デフォルトでnull
になることはない。
一方、一度も代入されていないクラスのフィールドや配列の要素を参照しようとすると、参照型は null
になり、
int
などの数値のプリミティブ型は 0
、boolean
は false
になり、コンパイルエラーにはならない。
Scala 2016/06/23
Javaとの互換性のためにJavaと同じnull
があるが、Scalaではnull
はJavaのライブラリを使用するときに現れてしまうのみで、通常の利用は推奨されない。
null
を使いたくなる場面ではScalaではOption
型の Some
, None
を使う。
一度も代入されていないローカル変数というのはScalaでは文法上ありえない。
val
や var
での変数宣言と同時に代入が必要。
変数宣言時に _
で代入すると、Int
などでは 0
、Boolean
は false
になり、それ以外は null
になる。
Nil
というものもあるが、これは要素が1つもない空のList
型のオブジェクトであり、ぜんぜん違う。
PHP 2016/03/30
NULL
というのがある。TRUE
/ FALSE
と同じく大文字小文字が区別されない。
一度も代入されていない変数や、unset
関数が呼び出された変数を参照しようとすると、未定義の変数として PHP Notice: Undefined variable
が発生し、NULL
という値が返される。
変数が定義済みかどうかをチェックするには isset
で調べれば良い。
isset
は引数に与えた変数が定義済みかどうかを TRUE
か FALSE
で返す。
NULL
を明示的に代入した変数に対しても FALSE
が返される。
isset
は通常の関数ではなく、言語構造である。
if (isset($a)) {
# 定義済みの場合
} else {
# 未定義の場合
}
isset
は変数だけでなく連想配列の要素が存在するかどうかにも使われる。
-> 連想配列に特定のキーが含まれているかどうかを判定するには
NULL
はいろいろな値を一致してしまうので注意。
var_export(NULL == NULL); // => true
var_export('' == NULL); // => true
var_export(0 == NULL); // => true
var_export(array() == NULL); // => true
var_export(FALSE == NULL); // => true
var_export(NULL === NULL); // => true
var_export('' === NULL); // => false
var_export(0 === NULL); // => false
var_export(array() === NULL); // => false
var_export(FALSE === NULL); // => false
NULL
| PHP Manual
http://php.net/manual/ja/language.types.null.php
isset
| PHP Manual
http://php.net/manual/ja/function.isset.php
Python 2013/10/14
None
というのがある。関数にreturn
文がないときに、None
が返されるものとみなされる。
Ruby 2014/07/18
nil
というのがある。Rubyでは nil
もオブジェクトであるので、メソッドを呼ぶ出すことができる。
nil
は NilClass
というクラスの唯一のインスタンスである。Scalaの Nil
とはぜんぜん意味が違う。
print nil.nil?
# => true
Perl 2015/01/24
undef
という値がある。
変数を宣言だけして一度も代入しないと undef
になる。または、宣言もなにもせずにいきなり初めての変数を参照しようとしても undef
になる。
定義済みの変数を未定義の状態に戻すには、以下のようにする。
$a = undef;
または以下のようにもできる。
undef $a;
defined
を使うと、定義済みかどうかを判定することができる。
if (defined $a) {
# 定義済みの場合
} else {
# 未定義の場合
}
undef
と ''
を eq
で比較すると Use of uninitialized value
という警告が出るが、等値との判定はされる。
JavaScript 2015/04/25
null
や undefined
というのがある。
null
かどうかを判定するには
a === null
undefined
かどうかを判定するには
typeof a === 'undefined'
外部リンク
null
とundefined
の違い | Qiita
http://qiita.com/shuhei/items/199281e07925d24059d5undefined
値のさまざまな判定方法 | 泥のように
http://blog.tojiru.net/article/205007468.html