Ruby类在实例化后永远不会进入我的初始化方法

时间:2013-09-29 04:07:34

标签: ruby methods initialization

我有以下代码。我在以后的代码中遇到游戏变量时遇到问题,经过进一步检查,我的初始化代码似乎没有运行。调试器永远不会触发。为什么我的初始化方法不在这里运行?

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

2 个答案:

答案 0 :(得分:1)

与C ++等静态语言不同,Ruby实际上会评估类定义中的代码。 Ruby在until块中被捕获,因此它甚至从未完成类定义以进入实例化。您可能希望将该代码放在方法中,以便它只在以后调用它时运行。

答案 1 :(得分:0)

你的until @status=="finished"只有无限循环,类定义中的@statusnil,所以@status=="finished"永远不会{ {1}}。

运行下面的代码,您将看到无限循环:

true