Когда вы открываете класс с ключевым словом class
, вы открываете новую область, и текущие привязки выбрасываются из окна. Более того, ваш код никогда не будет работать, так как вы ссылаетесь на player1
до определения переменной.
Чтобы решить эти две проблемы, мы должны переместить определение player1
над классом. Тогда вместо использования ключевого слова class
для определения класса Board
мы можем использовать конструктор Class
, который сохраняет текущие привязки.
В результате:
player1 = Player.new("Player1","X")
Board = Class.new do
puts player1.name
end
Хотя это может решить вашу проблему, я сомневаюсь, что эта функциональность вам действительно понадобится. Вопрос пахнет XY-проблемой . Вышеприведенное связывает класс в целом с тем, что значение player1
находится в момент определения класса.
В свою очередь это означает, что каждый экземпляр Board
каким-то образом связан с player1
, Я предполагаю, что каждый экземпляр Board
может иметь своих собственных игроков, и в этом случае лучше подойдет следующее:
class Board
def initialize(player1)
@player1 = player1
end
end