ネストした If - Else
CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 24/88。
2つ以上の条件をチェックする必要がある場合はどうすればよいでしょうか?if-else 文を別の if-else 文の中に配置することができます。これはネスト(入れ子)と呼ばれ、複数の判断ポイントを処理できるようになります。
score = 85
if score >= 90
puts "Grade: A"
else
if score >= 80
puts "Grade: B"
else
puts "Grade: C"
end
endRubyは最初の条件をチェックします。それが偽(false)の場合、別の if-else が待機している else ブロックに移動します。これにより、可能性を一つずつ絞り込んでいく決定の連鎖が作成されます。
Rubyは、elsifを使用してこれをもっと簡潔に記述する方法を提供しています。これは、elseとifを1つのキーワードにまとめたものです:
score = 85
if score >= 90
puts "Grade: A"
elsif score >= 80
puts "Grade: B"
else
puts "Grade: C"
endどちらの例も同じ結果になりますが、elsif を使うことでコードがよりフラットになり、読みやすくなります。必要な数だけ elsif 条件を連結することができ、最後の else が、それまでの条件に一致しなかったすべてのケースをキャッチします。
チャレンジ
簡単次の変数が与えられています:
temperature = 15if、elsif、else を使用して、温度を分類し、適切なメッセージを出力する気象アドバイザリーシステムを作成してください:
temperatureが30以上の場合、Hot - Stay hydratedと出力してくださいtemperatureが20以上の場合、Warm - Enjoy the dayと出力してくださいtemperatureが10以上の場合、Cool - Bring a jacketと出力してくださいtemperatureが0以上の場合、Cold - Bundle upと出力してください- それ以外の場合は、
Freezing - Stay indoorsと出力してください
温度に一致するメッセージを1つだけ出力してください。
チートシート
if-else 文を入れ子(ネスト)にして、複数の条件をチェックすることができます:
score = 85
if score >= 90
puts "Grade: A"
else
if score >= 80
puts "Grade: B"
else
puts "Grade: C"
end
endRuby は、複数の条件を連結するためのより簡潔な方法として elsif を提供しています:
score = 85
if score >= 90
puts "Grade: A"
elsif score >= 80
puts "Grade: B"
else
puts "Grade: C"
end必要に応じて、いくつでも elsif 条件を連結できます。最後の else は、前の条件に一致しなかったすべてのケースをキャッチします。
自分で試してみよう
temperature = 15
# TODO: 以下に温度を分類するためのコードを記述してください
# if、elsif、elseを使用して、適切な気象アドバイザリメッセージを出力してくださいこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。