Ruby类在实例化后从未进入我的initialize方法
我有以下代码。我在以后的代码中获取游戏变量时遇到问题,经过进一步检查,我的初始化代码似乎没有运行。调试器从不启动。为什么我的initialize方法没有在这里运行Ruby类在实例化后从未进入我的initialize方法,ruby,methods,initialization,Ruby,Methods,Initialization,我有以下代码。我在以后的代码中获取游戏变量时遇到问题,经过进一步检查,我的初始化代码似乎没有运行。调试器从不启动。为什么我的initialize方法没有在这里运行 class Game attr_accessor :player, :status def initialize @player=Player.new debugger @status="active" end until @status=="finished" turn=Turn
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
<>不同于C++的静态语言,露比实际上对类定义中的代码进行了评估。Ruby被困在
直到块中,因此它甚至从未完成类定义以进行实例化。您可能希望将该代码放入一个方法中,以便在以后调用它时运行。< P>不同于C++之类的静态语言,露比实际上评估类定义中的代码。Ruby被困在直到块中,因此它甚至从未完成类定义以进行实例化。您可能希望将该代码放在一个方法中,以便它只在以后调用它时运行。您刚刚得到了一个无限循环,,直到@status==“finished”
,类定义中的@status
是nil
,因此@status==“finished”
永远不会是true
运行下面的代码,您将看到无限循环:
class Player; end
class Game
attr_accessor :player, :status
def initialize
@player=Player.new
@status="active"
end
until @status=="finished"
p 1
end
end
在@status==“finished”
之前,类定义中的@status
是nil
,因此@status==“finished”
永远不会是true
运行下面的代码,您将看到无限循环:
class Player; end
class Game
attr_accessor :player, :status
def initialize
@player=Player.new
@status="active"
end
until @status=="finished"
p 1
end
end
除了@Max在回答中所说的之外,在进行了允许您运行游戏的更改之后,new
,Ruby在进入调试器时将引发NoMethod
异常错误(除非您在类游戏中有一个名为该名称的方法,而该方法未显示在您的代码中)。除了@Max在回答中所说的之外,在做出允许您运行游戏的更改之后。new
,Ruby将在进入调试器时引发NoMethod
异常错误(除非您在类游戏中有一个名为该名称的方法,而该方法未显示在您的代码中)。