【Ruby】三項演算子(条件演算子)の書き方と使い方の基本

作成日: 更新日:

開発環境

  • Ruby version: ruby 3.1.2

Rubyの三項演算子(条件演算子)とは

Rubyの三項演算子(条件演算子)とは、演算子式のなかで条件式の結果によって異なる値を返す演算子です。 公式リファレンス:https://docs.ruby-lang.org/ja/3.1/doc/spec=2foperator.html#cond

Rubyの三項演算子(条件演算子)の書き方

Rubyの三項演算子(条件演算子)の書き方は下記になります。

1条件式 ? 条件式がtrueの場合に行う処理 : 条件式がfalseの場合に行う処理

条件式の結果によってtrueの場合に行う処理、またはfalseの場合に行う処理を返します。 三項演算子(条件演算子)を使用する場合の注意点ですが、改行は問題ありませんが「?」や「:」の前後に空白を入力せずに省略してしまうとエラーになる場合がありますので注意してください。 また、上記の三項演算子(条件演算子)は if文を使って下記のように記述した場合と同じです。

1if 条件式 then
2    条件式がtureの場合に行う処理
3else
4    条件式がfalseの場合に行う処理
5end

複雑な条件分岐はif文やunless文などを使用するほうが良いですが、簡単な条件分岐であれば三項演算子(条件演算子)を使用すれば記述量も少なく読みやすくなります。

Rubyの三項演算子(条件演算子)の使い方

Rubyの三項演算子(条件演算子)のよくあるパターンのサンプルコードで使い方の解説をしていきます。 条件式で真偽値を判定する場合、比較演算子や論理演算子などが使用されることが主なため、サンプルコードをみながら覚えていくと良いでしょう。 公式リファレンス:https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html

三項演算子(条件演算子)の単一条件パターン

三項演算子(条件演算子)のよくある単一条件パターンです。

1score = 80
2result = score >= 70 ? "合格" : "不合格"
3puts result

putsの後に三項演算子(条件演算子)を使用ているため、resultへは「score >= 70」がtureであれば返り値は「合格」、「score >= 70」がfalseであれば返り値は「不合格」が代入されます。 また、上記をif文で記述した場合は下記となります。

1score = 80
2
3if score >= 70
4    result = "合格"
5else
6    result = "不合格"    
7end
8
9puts result

簡単な条件分岐であれば三項演算子(条件演算子)のほうが簡潔に記述することができています。

三項演算子(条件演算子)の複数条件パターン

三項演算子(条件演算子)の複数条件パターンです。

1name = ""
2result = (name.nil? or name == "") ? ("名前が未入力です。") : ("名前は#{name}です。")
3puts result

「nil?」は対象のオブジェクトがnilであればtrueを返してくれますが、空白値の場合はfalseとなるため、nilまたは空白値の場合に返り値がtrueとなるような条件式です。 三項演算子(条件演算子)は「and(&&)」や「or(||)」を使用した複数条件も使用することができますが、()をつけて一括りだとわかるようにしておかないと正常な動作にならない場合がるので注意が必要です。 また、上記をif文で記述した場合は下記となります。

1name = ""
2
3if name.nil? or name == ""
4    result = "名前が未入力です。"
5else
6    result = "名前は#{name}です。"
7end
8
9puts result

どちらも同じ結果となりますが、複数条件や入れ子など複雑な条件分岐の場合は素直にif文を使用するのがおすすめです。

おわりに

Rubyの三項演算子(条件演算子)の使い方を解説してきました。 このようにif文など条件分岐の構文を使用せずとも簡単な条件分岐は三項演算子(条件演算子)で簡潔に記述することができます。 プログラミングにおいてコーディングが上手くなってくると三項演算子(条件演算子)は使用頻度がかなり高いため、是非、参考にしてください。

【Ruby】三項演算子(条件演算子)の書き方と使い方の基本 | いっしー@Webエンジニア