Ruby,在While循环中,将字符串转换为方法调用
这是在一次调用的方法“play”中存在的。进入while循环后,您将一直停留在那里,直到退出流程。现在,我尝试使用case语句将用户定义的字符串转换为变量,该变量在末尾传递以调用下一个方法,所有这些都在while循环中Ruby,在While循环中,将字符串转换为方法调用,ruby,methods,Ruby,Methods,这是在一次调用的方法“play”中存在的。进入while循环后,您将一直停留在那里,直到退出流程。现在,我尝试使用case语句将用户定义的字符串转换为变量,该变量在末尾传递以调用下一个方法,所有这些都在while循环中 def play next_action = @start # comes from an initialize function earlier in script while true case next_action when beginning
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语句无法识别除最后一个选项之外的任何选项
第二个问题:这会导致循环结束,跳到调用的最后一个方法,然后退出流程
非常感谢您的帮助或建议。您应该使用状态机
请参阅:您应该改用状态机 请参阅:查看是否更改
next_action = @start
致:
进一步了解您。查看是否更改
next_action = @start
致:
这是一个状态机。它只是没有使用现有的FSM宝石。谢谢你的确认,克里斯。我对我的代码不是一个状态机感到非常困惑,这是一个状态机。它只是没有使用现有的FSM宝石。谢谢你的确认,克里斯。对于我的代码如何不是状态机,我感到非常困惑。私有方法'chomp'调用:start:Symbol(NoMethodError)似乎无论
下一个动作是什么,它都不是字符串,因此可能不等于“指令”、“显示”等。私有方法'chomp'调用:start:Symbol(NoMethodError)似乎无论下一个动作是什么,它都不是字符串,因此它可能不等于“指令”、“显示”等。