Menu
Coddy logo textTech

ネストした 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
end

Rubyは最初の条件をチェックします。それが偽(false)の場合、別の if-else が待機している else ブロックに移動します。これにより、可能性を一つずつ絞り込んでいく決定の連鎖が作成されます。

Rubyは、elsifを使用してこれをもっと簡潔に記述する方法を提供しています。これは、elseifを1つのキーワードにまとめたものです:

score = 85

if score >= 90
  puts "Grade: A"
elsif score >= 80
  puts "Grade: B"
else
  puts "Grade: C"
end

どちらの例も同じ結果になりますが、elsif を使うことでコードがよりフラットになり、読みやすくなります。必要な数だけ elsif 条件を連結することができ、最後の else が、それまでの条件に一致しなかったすべてのケースをキャッチします。

challenge icon

チャレンジ

簡単

次の変数が与えられています:

temperature = 15

ifelsifelse を使用して、温度を分類し、適切なメッセージを出力する気象アドバイザリーシステムを作成してください:

  • temperature30 以上の場合、Hot - Stay hydrated と出力してください
  • temperature20 以上の場合、Warm - Enjoy the day と出力してください
  • temperature10 以上の場合、Cool - Bring a jacket と出力してください
  • temperature0 以上の場合、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
end

Ruby は、複数の条件を連結するためのより簡潔な方法として 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を使用して、適切な気象アドバイザリメッセージを出力してください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン