【Ruby入門】真偽判定present?の使い方をわかりやすく解説

プログラミングをする上で、オブジェクトに値が格納されているか?判断してから処理を進めたい場合はよくあります。

オブジェクトに値が格納されているか判別する方法を知りたい
さまざまなオブジェクトで値が格納されているか判断する方法を知りたい

そのような方に向けて、この記事では真偽判定を行うpresent?について以下の内容を解説します。

  • 【基礎】present?とは
  • 【基礎】present?を使用するためには
  • 【基礎】present?の基本的な使い方
  • 【発展】present?で条件式を記述する方法

present?の使用方法について、パターン別にわかりやすく解説していますので、ぜひ参考にしてください!

present?とは

present?は、Rubyの真偽判定の1つで、オブジェクトに値が格納されているかを評価するときに使用します。blank?、present?、nil?、empty?は、それそれ以下のような違いがあります。

メソッドメソッドの意味
nil?変数の値がnilまたは、値なしの場合、真となります。
empty?変数の値が""(文字列の場合)や値が空白の場合、真となります。
nil?との違いは、empty?は変数の値はあることはあるが、その値が空を示している、という点です。
blank?nil?が真となる場合、または、empty?が真となる場合に、blank?は真となります。
簡単に言えば、blank?は値といえるものがない場合、真となります。
present?present?は、blank?全く逆の動作をします。present?は、値といえるものがある場合、真となります。

次項よりpresent?を使用するための方法を見ていきましょう。

present?を使用するためには

真偽判定のnil?、empty?はRuby標準で用意されているメソッドですのでそのまま使えますが、真偽判定のpresent?、blank?などを使用するためにはgemによって提供されているActiveSupportをインストールする必要があります。

ActiveSupportは、ターミナルから以下のコマンドを実行します。

$ gem install activesupport

ActiveSupportをインストールして、実際に使うためにはソースコードの先頭で以下のように宣言します。

require 'active_support/all'

これでActiveSupportが使用できるようになりました。

present?の使い方

ここではpresent?の具体的な使い方を見ていきましょう

基本的な使い方

サンプルプログラム:

require 'active_support/all'

num1 = 10  # true
num2 = nil  # false
num3 = 0  # true
str1 = "hello" # true
str2 = "" # false
bool1 = true # true
bool2 = false # false

p num1.present?
p num2.present?
p num3.present?
p str1.present?
p str2.present?
p bool1.present?
p bool2.present?

実行結果:

true
false
true
true
false
true
false

実行結果からわかるように、present?はオブジェクトに値が格納されていればtrueを返し、nilや空文字、bool値がfalseの場合はfalseを返します。

配列やハッシュの判定

以下のように配列やハッシュについても要素が空の場合はpresent?はfalseを返します。サンプルプログラム:

require 'active_support/all'

array = []
hash = {}

p array.present?
p hash.present?

実行結果:

false
false

また、配列の要素別にpresent?で値が空かどうか調べるには以下のように使用します。サンプルプログラム:

require 'active_support/all'

array = Array["apple", "orange", "", "melon", "", "banana"]

for var in array do
    p var.present?
end

実行結果:

true
true
false
true
false
true

present?をif文で使用する

真偽判定を行うpresent?は返り値にtrue、falseを返すのでif文で使用することもできます。サンプルプログラム:

require 'active_support/all'

array = Array["apple", "orange", "", "melon", "", "banana"]

for var in array do
    if var.present? then
        p var
    else
        p "値は空です"
    end
end

実行結果:

"apple"
"orange"
"値は空です"
"melon"
"値は空です"
"banana"

このようにif文で配列の要素ごとにpresent?で真偽判定を行うことができました!

その他の真偽値

Rubyの真偽値判定は前述したようにここで紹介したblank?以外にもさまざまな方法があります。真偽値判定についてもっとよく知りたい方は以下の記事を参考にしてください!

まとめ

ここではRubyでオブジェクトに値が格納されているか判定するためのpresent?について解説しました。

  • present?とは
  • present?を使用するためには
  • present?の基本的な使い方
  • present?で条件式を記述する方法

present?はオブジェクトが空、nilかどうか判断するときに便利ですので使い方については理解しておきましょう。present?について忘れてしまったら、この記事を思い出してくださいね。

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

侍ブログ編集部

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら