我正在创建一个基本的井字游戏,以保持我的" 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
答案 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