在 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
我正在创建一个基本的井字游戏来跟上我的 "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