Menu
Coddy logo textTech

三項演算子

CoddyのRubyジャーニー「ロジックとフロー」セクションの一部 — レッスン 40/56。

三項演算子は、値を返す if/else 文の 1 行のショートカットです。構文は condition ? value_if_true : value_if_false です。

age = 20
status = age >= 18 ? "Eligible" : "Not Eligible"
puts status   # Eligible

次のように書くのと同じです:

status = if age >= 18
           "Eligible"
         else
           "Not Eligible"
         end

両方の分岐が短い値を返す場合は、三項演算子を使用してください。いずれかの分岐で複数の式が必要な場合は、通常の if/else に戻してください。三項演算子に詰め込みすぎると、読みにくくなります。

補間を含め、他の式の中で直接使用することができます。

count = 1
puts "#{count} item#{count == 1 ? "" : "s"}"   # 1 item
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}"   # 5 items
challenge icon

チャレンジ

簡単

入力から整数 n を読み取ります。三項演算子を使用し(if/else ブロックは使用しないでください)、次のように正確に出力してください:

<n> is <label>

ここで label は以下の通りです:

  • n > 0 のときは positive
  • n < 0 のときは negative
  • n == 0 のときは zero

ヒント: 入れ子になった三項演算子 condition ? a : (other_condition ? b : c) を使用してください。

入力が 5 の場合、出力は 5 is positive となります。0 の場合は 0 is zero です。

チートシート

三項演算子は、1行で書けるif/elseのショートカットです:condition ? value_if_true : value_if_false

age = 20
status = age >= 18 ? "Eligible" : "Not Eligible"  # "Eligible"

三項演算子は入れ子(ネスト)にすることができ、式展開の中でも使用できます:

count = 5
puts "#{count} item#{count == 1 ? "" : "s"}"  # 5 items

# 入れ子の三項演算子
n = 3
label = n > 0 ? "positive" : (n < 0 ? "negative" : "zero")

三項演算子は、短く単純な分岐にのみ使用してください。分岐に複数の式が必要な場合は、if/elseを使用することをお勧めします。

自分で試してみよう

n = gets.to_i

# TODO: 三項演算子を使ってラベルを作成し、putsします
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン