Ruby类在实例化后从未进入我的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

我有以下代码。我在以后的代码中获取游戏变量时遇到问题,经过进一步检查,我的初始化代码似乎没有运行。调试器从不启动。为什么我的initialize方法没有在这里运行

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
异常错误(除非您在
类游戏中有一个名为该名称的方法,而该方法未显示在您的代码中)。