ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

条件分岐を1行にまとめる

目次


if文のみ

後置ifをつかう。
式 if 条件

event_name = 'エイト'

# if 条件 式 end
if event_name == 'エイト'
    puts "スイープ種目です。"
end

# 後置ifをつかう。
puts "スイープ種目です。" if event_name == 'エイト'


if文 else節が1つのみの場合

else節が1つしかなく、式が単純な場合は 条件 ? 式1 : 式2がつかえる。

event_name = 'エイト'

# if else end
if event_name == 'クォドルプル'
    puts "スカル種目です。"
else
    puts "スイープ種目です。"
end

# 条件 ? 式1 : 式2
# 条件が偽の場合は : 以降の式が実行される。
event_name == 'クォドルプル' ? puts("スカル種目です。") : puts("スイープ種目です。")


ちなみに上の場合puts "スカル種目です。"と書くとエラーになる。

エラーの例

event_name = 'エイト'

event_name == 'クォドルプル' ? puts "スカル種目です。" : puts "スイープ種目です。"
# syntax errorになる


putsの引数を()で囲むか、puts式全体を()で囲む必要がある。

event_name = 'エイト'

event_name == 'クォドルプル' ? (puts "スカル種目です。") : (puts "スイープ種目です。")
# スイープ種目です。 と表示される。


case文のwhen節を1行にまとめる

when節にthenを明記すると1行にまとめることができる。

thenなし、改行あり

event_name = 'エイト'

case event_name
when 'クォドルプル'
    puts "スカル種目です。"
when 'エイト'
    puts "スイープ種目です。"
end


thenあり、改行なし

event_name = 'エイト'

case event_name
when 'クォドルプル' then puts "スカル種目です。"
when 'エイト' then puts "スイープ種目です。"
end

# thenなし、改行なしはエラーになる。


今回の動作確認環境

Ruby 2.5.1p57