Как получить доступ к переменной из внешнего класса в другом файле - PullRequest
0 голосов
/ 11 ноября 2018

Моя файловая структура выглядит следующим образом:

Main/
Games/ 
   roulette.rb
casino.rb
wallet.rb
player.rb

У меня есть класс кошелька, в котором содержится денежная ценность в классе.

class Wallet
    attr_accessor :money
    def initialize
        @money = 0
    end
end

У меня есть класс игрока, который наследует класс Wallet

class Player < Wallet

    attr_accessor :name
    def initialize
        super()
        @name = nil
        get_user_info
    end

Затем у меня есть класс Casino, который наследуется от Player следующим образом:

class Casino < Player
    def initialize
        binding.pry
        puts @money, @name
    end

Я также использовал require_relative для извлечения обоих файлов, думая, что это даст мне доступ к их глобальным переменным @money, @name.

Если я нахожусь внутри файла roulette.rb, вот мой код, который я написал, просто чтобы посмотреть, будет ли он иметь значение.

require_relative '../wallet.rb'

class Roulette
    def initialize
        puts @wallet
    end
end

Как мне получить доступ к этим переменным в классе казино? Спасибо за помощь.

1 Ответ

0 голосов
/ 11 ноября 2018

Это не глобальные переменные. Они называются «переменными экземпляров», и для доступа к ним вам необходимо создавать экземпляры ваших казино и игроков. Похоже на это.

player = Player.new
player.money # => 0
player.money += 10
player.money # => 10

В вашем классе Казино вы не вызываете родительские инициализаторы (я думаю, что это просто недосмотр), поэтому он не инициализирует @name и @money.

А рулетка вообще ничего не делает, чтобы получить кошелек. Таким образом, остается значение по умолчанию ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...