Rubyのnilについて


参考文献 プロを目指す人のためのRuby入門より
参考サイト▶︎Rubyリファレンスマニュアルより
参考記事▶︎Ruby の nil は無か?

間違いあればご指摘いただければ幸いです。

はじめに

Rubyはオブジェクト指向言語であり、文字列や配列、数値に関しても、全てがオブジェクトです。

そして今回焦点を当てる「nil」もオブジェクトの一つです。

nilとは?

nil は何かが存在しないことを表すために用いられるオブジェクトのことです。
お恥ずかしながら、つい先程まで「nil」とは、何も存在しないことだと認識をしていましたがこれは間違いです。
存在してないことを教えてくれる役割も持っています。

真偽値のnil

Rubyの特徴とも言える真偽値のnilについてです。

Rubyでは真偽値のルールとして、以下の2点があります。

  • false または nilであれば偽
  • それ以外は全て真(trueそのもの、全ての数値、全ての文字列など)

このルールは他のプログラミング言語で該当しないそうです。Ruby独自のルールなんですね。
各言語におけるtrue/falseまとめ

?のつくnil

Rubyのメソッド名は?をつけることができます。
?をつけることでどうなるのかというと、真偽値を返すメソッドになります。

#オブジェクトがnilならtrue、そうでなければfalse
nil.nil? #=> true

これはnilに限ったことでなく、Rubyで最初から用意されているものにもいくつか存在します。
今回はnilにコミットしているので割愛しますので、参考記事を貼っておきます。
nil?, empty?, blank? の違い▶︎参考記事

NilClass

nilのクラスのことです。
nilはNilClassクラスの唯一のインスタンスになります。
nilもオブジェクトの一つという認識があれば違和感は感じないことと思います。
実際に、期待した値がなかった場合などに「nil」を返してくれますよね。