在Ruby中,为什么我从另一个类调用实例变量作为方法?

时间:2016-01-07 02:00:02

标签: ruby class instance-variables

我正在创建一个基本的井字游戏,以保持我的" Ruby chops。"在Game类中,我只使用下面的代码获得generate_board方法。我似乎无法直接访问@board实例变量。任何人都可以解释为什么我不得不把它称为一种方法,以及如何避免这种情况?谢谢!

class Board
  def initialize
    @board = (1..9).to_a
  end
end

class Game
  attr_accessor :board

  def initialize
    generate_board
  end

  def generate_board
    new_board = Board.new
    @board = new_board.board
  end
end

2 个答案:

答案 0 :(得分:1)

Board类中的实例变量@board只能由Board类中的其他方法访问。由于您的方法generate_board不在Board类之内且在另一个类中,因此Board类中的方法无法访问Board类中的@board实例变量。

这通常是实例变量的工作原理。

答案 1 :(得分:0)

关注Sagarpandya Answer您可以像这样编写代码。

class Board
  def initialize
    @board = (1..9).to_a
  end
end

class Game
  attr_accessor :board

  def initialize
    generate_board
  end

  def generate_board
     Board.new
  end
end
p Game.new.generate_board