三項演算子
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チャレンジ
簡単入力から整数 n を読み取ります。三項演算子を使用し(if/else ブロックは使用しないでください)、次のように正確に出力してください:
<n> is <label>ここで label は以下の通りです:
n > 0のときはpositiven < 0のときはnegativen == 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します
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。