クジラの練習帳006

練習帳006(条件式の種類)

f:id:whale_86:20201103194233j:plain

今回は問題ではなく、疑問に思ったことを調べていきたいと思います。

条件分岐

条件分岐を書く場合は、if文やcase文、unless文などがありました。それぞれの強みを調べていきたいと思います。

if文の特徴

if文は一番シンプルな条件式です。

if <条件式1>
条件式1がtrueだった時の処理
elsif <条件式2>
条件式2がtrueだった時の処理
else
条件式2がfalseだった時の処理
end

 条件式の真偽によって行う処理を変更していきます。

if ~がtrueなら処理を行い、falseで条件式を続ける場合はelsif ~に降ります。

条件式を抜け、falseでの処理を行う場合はelseで書きます。条件分岐の終わりにendを置きます。

 

unless文の特徴

unlessはifの反対で、条件式がfalseの時に処理を行います。

unless <条件式1>
条件式1がfalseだった時の処理

else
条件式1がtrueだった時の処理
end

また、elsifは使えません。

 

case文の特徴

case文は条件をさらに詳しく、また多くしたい時に使います。

case 対象オブジェクト
when 値1
値1と一致する場合に行う処理
when 値2
値2と一致する場合に行う処理
when 値3
値3と一致する場合に行う場合
else
どの値にも一致しない場合
end

 同じ内容をif文で書くとこんな感じ

対象オブジェクト
if 対象オブジェクト == 1
値1と一致する場合に行う処理
elsif 対象オブジェクト == 2
値2と一致する場合に行う処理
elsif 対象オブジェクト == 3
値3と一致する場合に行う処理
else
どの値にも一致しない場合
end

どちらが読みやすいでしょうか?

case文はif文で代用ができると思いますが、条件が増えても可読性が保てる利点があります。

 

case文の例文

puts "誕生月を入力してください。"
month = gets.to_i

case month
when 1
puts "睦月"
when 2
puts "如月"
when 3
puts "弥生"
when 4
puts "卯月"
when 5
puts "皐月"
when 6
puts "水無月"
when 7
puts "文月"
when 8
puts "葉月"
when 9
puts "長月"
when 10
puts "神無月"
when 11
puts "霜月"
when 12
puts "師走"
else
puts "範囲外の値です"
end

 

前回 クジラの練習帳005 - whale_86’s blog

次回 クジラの練習帳007 - whale_86’s blog