如何在Ruby中编写一个在when子句中包含多个语句的case语句?

oalqel3c  于 2024-01-07  发布在  Ruby
关注(0)|答案(4)|浏览(211)

我试着用逗号分隔when子句中的语句,但是没有用。
when 1; statement,statement,statement
when 2; statement,statement,statement
我在网上找不到这样的例子。

  1. case selection
  2. when 1
  3. system "clear"
  4. view_all_entries
  5. main_menu
  6. when 2
  7. system "clear"
  8. create_entry
  9. main_menu
  10. when 3
  11. system "clear"
  12. search_entries
  13. main_menu
  14. when 5
  15. puts "Good bye!"
  16. exit(0)
  17. else
  18. system "clear"
  19. puts "Sorry, that is not a valid input"
  20. main_menu
  21. end

字符串

ar7v8xwq

ar7v8xwq1#

你的问题似乎是“我如何才能把所有这些语句放在一行上,从而减少行数”。
一般来说,你可以在ruby中使用“;”来代替End-of-Lines。因此:

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

字符串

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


使用“;“在任何方面都不像ruby,不推荐使用。请参阅下面(其他答案),以获得更好的重构,它可以剥离重复的代码。

展开查看全部
42fyovps

42fyovps2#

我倾向于这样写:

  1. if selection==5
  2. puts "Good bye!"
  3. exit(0)
  4. end
  5. system "clear"
  6. case selection
  7. when 1 then view_all_entries
  8. when 2 then create_entry
  9. when 3 then search_entries
  10. else puts "Sorry, that is not a valid input"
  11. end
  12. main_menu

字符串

展开查看全部
1zmg4dgp

1zmg4dgp3#

您可以使用when - then语法。请注意,如果行太长,则会被视为不好的做法:

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

字符串
要在同一行上对同一条件执行多个语句,可以使用;分隔它们。然而,这总是被认为是一种不好的做法:

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

展开查看全部
krcsximq

krcsximq4#

我试过逗号,它不工作
是的,确实如此:

  1. case value
  2. when 1, 2
  3. "one or two"
  4. else
  5. "something other than one or two"
  6. end

字符串
如果value为1或2,则返回“one or two”

相关问题