【Ruby】三項演算子を徹底解説!

Ruby

三項演算子とは

三項演算子とは複数行に渡るif文を1行で書くことができる条件演算子です。

三項演算子を使ってみよう
リンクをコピーしました

下のようなif文があるとします。

ruby
1
2
3
4
5
if 条件式
  A
else
  B
end

三項演算子を使うと下記のように1行で定義することができます。

ruby
1
条件式 ? A : B

非常にコンパクトに書けることがわかりますね!

実際に使うとこのようになります。

三項演算子
「?」と「:」で指定するので条件式や式を()でくくってあげると見やすくなります。

ruby
1
(num = 1) ? ("1です") : ("1以外です")

このように条件が1つのif文は三項演算子を使うと簡潔に書けます。
ただし複雑な構造の式には向いていないのでその際はif文を使って書いた方が可読性が上がります。
時と場合によってif文と三項演算子を使い分けるといいですね!

メソッドで利用してみよう
リンクをコピーしました

では実際に三項演算子はどのように使われるか例をみてみましょう。

ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def identificate?(username)
  username == 'programan' ? true : false
end

puts 'ご自身のお名前をご入力ください'

while true do
  name = gets.chomp
  if identificate?(name)
    puts '本人確認が完了しました'
    exit
  else
    puts '本人確認が失敗しました、もう一度ご入力ください'
  end
end

上の例だとメソッド内で三項演算子を使用しています。
usernameが「programan」ならtrueが返り、それ以外の文字ならfalseが返ります。
そのメソッドを利用して本人確認ができるコードをこのように簡潔に書くことができます。

三項演算子を使って変数を定義してみよう
リンクをコピーしました

次は三項演算子を使って変数を定義する例をみてみましょう。

ruby
1
2
score = 60
result = score > 80 ? '合格' : '不合格'

このコードだとまずscoreという変数を定義します。
そして score > 80 が true だと「合格」が、flaseだと「不合格」という文字がresultという変数に代入されます。
これをif文で書くとこんなにも長くなってしまいます。

ruby
1
2
3
4
5
6
socre = 60
if score > 80
  result = '合格'
else
  result = '不合格'
end

三項演算子を使うと非常にスッキリしますね。

まとめ

三項演算子は簡単なif文を1行で定義できる非常に便利なものです。
慣れるまではif文の方が書きやすいかもしれませんが、慣れると非常に簡単にコードが書けるので積極的に使っていきましょう!