我有以下代码。我在以后的代码中遇到游戏变量时遇到问题,经过进一步检查,我的初始化代码似乎没有运行。调试器永远不会触发。为什么我的初始化方法不在这里运行?
class Game
attr_accessor :player, :status
def initialize
@player=Player.new
debugger
@status="active"
end
until @status=="finished"
turn=Turn.new
turn.start_turn
...MORE TURN CODE HERE...
end
end
Game.new
答案 0 :(得分:1)
与C ++等静态语言不同,Ruby实际上会评估类定义中的代码。 Ruby在until
块中被捕获,因此它甚至从未完成类定义以进入实例化。您可能希望将该代码放在方法中,以便它只在以后调用它时运行。
答案 1 :(得分:0)
你的until @status=="finished"
只有无限循环,类定义中的@status
为nil
,所以@status=="finished"
永远不会{ {1}}。
运行下面的代码,您将看到无限循环:
true