1

这存在于一个被调用一次的方法“play”中。进入 while 循环后,您会一直呆在那里,直到退出该过程。现在,我正在尝试使用 case 语句将用户定义的字符串转换为最后传递的变量以调用下一个方法,所有这些都在 while 循环中。

def play
  next_action = @start # comes from an initialize function earlier in script
  while true
    case next_action
    when beginning
      next_action = beginning
    when "instruct"
      next_action = instructions
    when "display"
      next_action = display_users
    else
      puts "Unknown command."
      next_action = display_users
    end
    puts "\n----------"
    next_action = method(next_action).call
  end
end

第一个问题:case 语句不能识别除最后一个之外的任何选择。

第二个问题:这导致循环结束,跳转到最后调用的方法,然后退出进程。

任何帮助或建议表示赞赏。

4

2 回答 2

1

看看有没有变

next_action = @start

至:

next_action = @start.chomp

让你更进一步。

于 2013-06-04T22:00:55.610 回答
0

您应该改用状态机。

请参阅:http ://railscasts.com/episodes/392-a-tour-of-state-machines

于 2013-06-04T21:41:30.013 回答