カテゴリー
未分類

Rubyで多数の条件分岐をcaseで行う

Rubyにはifunless以外にも条件分岐を行えるcaseというのが存在する。elsifで条件を追加していっても同様の処理を行えるが、コードによってはcaseを使った方が分かりやすく記述することができる。

students = {
"Mike" => 5,
"Jane" => 4,
"Tom" => 3,
"Emily" => 2,
"Bill" => 1,
"Jack" => 0
}
students.each do |key,value|
case value
when 5
puts "#{key} class A"
when 4,3
puts "#{key} class B"
when 2,1
puts "#{key} class C"
else
puts "#{key} are retest"
end
end
# Mike class A
# Jane class B
# Tom class B
# Emily class C
# Bill class C
# Jack are retest

casewhenには正規表現を使うこともできる。

students = {
"Mike" => "My favorite food is fish burger",
"Jane" => "My favorite food is apple jam",
"Tom" => "My favorite food is meat",
"Emily" => "My favorite food is lettuce",
"Bill" => "My favorite food is apple pie",
"Jack" => "My favorite food is fish sandwich"
}
students.each do |key,value|
case value
when /apple/
puts "#{key} like apple"
when /fish/
puts "#{key} like fish"
else
puts "#{key} like unknown"
end
end
# Mike like fish
# Jane like apple
# Tom like unknown
# Emily like unknown
# Bill like apple
# Jack like fish

Rubyではない他の言語におけるswitchのようなものを探している人は、Rubyではそれがcaseに該当するのかもしれない。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA