Ruby,在While循环中,将字符串转换为方法调用

时间:2013-06-04 21:39:31

标签: ruby methods

这生活在一次被称为“游戏”的方法中。进入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语句无法识别除最后一个选项之外的任何选择。

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

感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:1)

查看是否更改

next_action = @start

为:

next_action = @start.chomp

让你更进一步。

答案 1 :(得分:0)

你应该使用状态机。

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