Ruby
RubyOnRails
三項演算子

【Ruby・Rails】三項演算子アレルギーが1分で解消した。+便利な使い方

三項演算子という言葉にアレルギーがあったがそんな難しい話ではなかった

こんなやつ。

三項演算子
params[:remember_me] == '1' ? remember(user) : forget(user)

三項演算子の中で何が起きているか

これって、

三項演算子じゃなく書いた場合
if 条件
  結果1
else
  結果2
end

というのを以下のように書いただけ。

三項演算子
条件 ? 結果1 : 結果2

つまり

params[:remember_me] == '1' ? remember(user) : forget(user)


#コメントで教えてもらったのですが、カッコをつけたら見やすいです。
(params[:remember_me] == '1') ? (remember(user)) : (forget(user))

#↑↑↑この上下が全く同じ。↓↓↓

if params[:remember_me] == '1'
  remember(user)
else
  forget(user)
end

便利な使い方

①値を代入する時に、三項演算子を使う。

  if boolean?
    var = '値1'
  else
    var = '値2'
  end

三項演算子を使うと、上のコードは以下のようになる。

  var = boolean? ? '値1' : '値2'

②三項演算子をメソッドの戻り値にする。

  def foo
    do_stuff
    boolean? ? "値1" : "値2"
  end

参考

感謝します!!
【Ruby・Rails】三項演算子(条件演算子)を使ってif文をスリムに書こう!