如何在Ruby中用if子句中的多个语句编写case语句?

时间:2016-01-15 18:25:59

标签: ruby

我尝试用逗号分隔when子句中的语句,但它没有用。

  

时为1;声明,声明,声明

     

时2;声明,声明,声明

我在网上找不到任何这个例子。

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

4 个答案:

答案 0 :(得分:5)

您的问题似乎是"我怎样才能将所有这些陈述放在一行上以减少行数#34;

通常,您可以使用";"在红宝石中取代End-of-Lins。因此:

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

或者

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

使用&#34 ;;"在任何方面都不是像红宝石一样,推荐。请参阅下面的更好的重构,删除重复的代码。

答案 1 :(得分:4)

我倾向于这么写:

if selection==5
  puts "Good bye!"
  exit(0)
end

system "clear"

case selection
when 1 then view_all_entries
when 2 then create_entry
when 3 then search_entries
else        puts "Sorry, that is not a valid input"
end

main_menu

答案 2 :(得分:3)

  

我已经尝试过逗号,但它不起作用

是的,确实如此:

case value
when 1, 2
  "one or two"
else
  "something other than one or two"
end
如果value为1或2

,则

返回“一个或两个”

答案 3 :(得分:3)

您可以使用when - then语法。请注意,如果线条变得太长,则认为这是不好的做法:

case value
when 1 then statement1
when 2 then statement2
when 3 then statement3
when 4 then statement4
end

要在同一行上执行相同条件的多个语句,您可以使用;将它们分开。但是,这一直被认为是一种不好的做法:

case value
when 1 then statement1; statement11; statement12
when 2 then statement2; statement21; statement22
when 3 then statement3; statement31; statement32
when 4 then statement4; statement41; statement42
end