Techioz Blog

Ruby で when 節内に複数のステートメントを含む case ステートメントを記述するにはどうすればよいですか?

概要

when 句内のステートメントをカンマで区切ろうとしましたが、うまくいきませんでした。

この例はオンラインで見つかりませんでした。

case selection
when 1
  system "clear"
  view_all_entries
  main_menu
when 2
  system "clear"
  create_entry
  main_menu
when 3
  system "clear"
  search_entries
  main_menu
when 5
  puts "Good bye!"
  exit(0)
else
  system "clear"
  puts "Sorry, that is not a valid input"
  main_menu
end

解決策

あなたの質問は、「行数を減らすために、これらのステートメントをすべて 1 行に配置するにはどうすればよいですか」ということのようです。

通常は「;」を使用できます。 Ruby で行末を置き換えます。したがって:

case selection
when 1; system "clear"; view_all_entries; main_menu
...

または

case selection
when 1 then system "clear"; view_all_entries; main_menu
...

「;」を使用するいずれにせよ、これは Ruby らしくないため、お勧めできません。重複したコードを削除する、より優れたリファクタリングについては、以下 (他の回答) を参照してください。