Rubyのnil判定を行う方法を現役エンジニアが解説【初心者向け】

初心者向けにRubyのnil判定を行う方法について現役エンジニアが解説しています。nilとは、存在しない、何も無いという意味です。他言語ではnullになっている場合もあります。サンプルではnil、空文字、空配列で判定しています。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Rubyのnil判定を行う方法について解説します。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Rubyのnil判定を行う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

nilとは

nilとは、「存在しない」という意味です。変数が初期化された時には、nilが割り当てられています。

ややこしいですが、0やfalse、[](空の配列)、{}(空のhash)、””(空文字)は、nilと扱われません。オブジェクトがnilかどうかを判定するのには、nil?メソッドが使用できます。

nil?はよく使うメソッドなので、覚えておきましょう。

emptyとの違いはなに?

emptyは、オブジェクトが「空」であるという意味です。つまり変数は代入されているが、中身がない状態です。

先ほど説明した、[](空の配列)、{}(空のhash)、””(空文字)がemptyに当たります。オブジェクトが空かどうかを判定するには、empty?メソッドが使用されます。

nil?と同様に、empty?もよく使うので押さえておきましょう。

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に実行結果を見てみる

それでは、いくつか試して実行結果の違いを確認しましょう。nil、””(空文字)、[](空配列)の3パターンで試しました。

 

nilの場合

a = nil
p a.nil?
p a.empty?

 

実行結果は以下の通りです。nilクラスには、empty?をしようできないのでエラーが発生します。

true
 .
 .
NoMethodError (undefined method `empty?' for nil:NilClass)

 

空文字の場合

msg1 = ""
msg2 = "msg"

p msg1.nil?
p msg1.empty?

p msg2.nil?
p msg2.empty?

 

実行結果は以下の通りです。

false
true

false
false

 

空配列の場合

a1 = []
a2 = [1,2,3]

p a1.nil?
p a1.empty?

p a2.nil?
p a2.empty?

実行結果は以下の通りです。

false
true

false
false

 

「何もない」状態と「空」の状態をプログラミングでは別のものとして扱います。わかりにくい部分なので、しっかり理解しましょう。

以上で解説を終わります。

 

筆者プロフィール

メンター金成さん

フリーランスエンジニア。
Railsの案件を中心に、様々なアプリケーションを開発してます。

使える言語は、ruby python go 。最近はgoにハマってます。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。