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

In Ruby, why am I calling an instance variable from another class as a method?

我正在创建一个基本的井字游戏来跟上我的 "Ruby chops." 在游戏 class 中,我只获得了 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

Board class 中的实例变量 @board 只能由 Board class 中的其他方法访问。由于您的方法 generate_board 在 Board class 之外并且在不同的 class 中,因此 Board class 的 @board 实例变量无法访问游戏中的方法 class.

这通常是实例变量的工作方式。

在下面 你可以这样写你的代码。

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