プログラミングをする上で、オブジェクトに値が格納されているか?判断してから処理を進めたい場合はよくあります。
さまざまなオブジェクトで値が格納されているか判断する方法を知りたい
そのような方に向けて、この記事では真偽判定を行う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?について忘れてしまったら、この記事を思い出してくださいね。