пытаясь использовать переменные наследования из другого класса в другом файле ruby - PullRequest
0 голосов
/ 30 января 2020

ФАЙЛ: bank.rb

class Bank
    def initialize ()
        @bank_name  = "Natinonal Bank"
        @saving = 1.85e123
        @found = "12/03/1933"
        @employee = {
            :it => ["Joah", "Carlos", "Roberto", "Luisa", "Anna", "Julio", "Marcos", "Guilherme"],
            :rh => ["João", "Marcos. F", "Richalison", "Agusto", "Ulisses", "Mariana", "Sarah"],
            :contabilidade => ["Julia", "José", "Henrique", "Marlon", "Messias", "Renato", "Luis"]
        }
        @sectors = [:it, :rh, :contabilidade]
    end

    def total_employees ()
        @employee.each {|key, value|
            counter = 0
            puts "No setor de #{key} consta-se os funcionários:"
            value.each {|func|
                puts "\t-->#{func}"
                counter += 1
            }

            puts "Total de funcionários no setor de #{key} é: #{counter}"
            puts "\n"
        }
    end

    def info ()
        puts "
    NOME >> #{@name}
    TOTAL SAVING >> #{@saving}
    ORIGEM >> #{@found}
        "
    end
end

ФАЙЛ: fiscal.rb

require ".\\bank"

class Fiscal < Bank
    #attr_reader :user, :choice

    def initialize (user, choice)

        @user_name = user
        @choice_ = choice
        puts @user_name
        puts @bank_name
    end

    def do
        if @choice == 1
            puts @bank_name
            system "PAUSE"
            system "CLS"

        elsif @choice == 2
            info
            system "PAUSE"
            system "CLS"

        else
            system "CLS"
            puts "SAINDO"
            system "PAUSE"
        end
    end
end

if __FILE__ == $0
    puts "
[1] ---> Total de funcionários
[2] ---> Informações do banco
*Outros valores -> exit
-----------------------------------
    "
    puts "Informe nome, e a escolha"
    Bank.new
    fiscal_obj = Fiscal.new("Pedro", 1)
end

1. Я пытаюсь получить доступ к @banlk_name из класса Bank, я пытался использовать super (bank_name) в def инициализирует, но он все еще делает некоторые ошибки

-> Я подумал, что если я сделаю это, он, предположительно, будет работать правильно FILE: fiscal.rb

def initialize (user, choice, bank_name)
        super(bank_name)
        @user_name = user
        @choice_ = choice
        puts @user_name
        puts @bank_name
end

Но ошибка все еще происходит, в основном я пытаюсь увидеть переменные из класса Bank, но некоторая ошибка все еще в моем коде: ставит @bank_name -> Ничего не появляется

1 Ответ

0 голосов
/ 30 января 2020

Вы унаследовали от класса правильно, но затем переписываете метод, от которого вы надеетесь унаследовать (или хотя бы некоторые из них).

Попробуйте:

class Fiscal < Bank
  #attr_reader :user, :choice

  def initialize (user, choice)
    @user_name = user
    @choice_ = choice
    super  ## <--- Insert this line here
    puts @user_name
    puts @bank_name
  end

Super говорит rails выполнить метод, который реализует класс, который вы наследуете от. Поместив его в середину переопределенного метода, мы можем зафиксировать это поведение и добавить его в дочерний класс

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