Как вызывать массивы из классов / объектов в Ruby (сложный способ изучения ruby ​​42)

Я совершенно новичок как в Stack Overflow, так и в Ruby, поэтому заранее прошу прощения, если я что-то не отформатировал, но мне бы хотелось немного помочь при вызове или отображении значения массивов из родительского класса через объект.

Следующий код - это задание / учебное упражнение, которое я выполняю в рамках книги "Изучай Руби трудным путем" (упражнение 42):

## Person is-a object
class Person

    def initialize(name)
        ## class Person has-a name
        @name = name

        ## person has-a pet of some kind
        @pet = nil
    end

    @possessions = ['house', 'car', 'clothes', 'furniture', 'guitar']

    attr_accessor :pet
    attr_accessor :possessions
end

## class Employee is-a Person
class Employee < Person

    def initialize(name, salary)
        ## set the @name attribute from class Person
        super(name)
        ## class Employee has-a salary
        @salary = salary
    end


    tasks = {"emails" => "Must answer all emails right away", 
            "reports" => "File two reports once a month",
            "reimbursement" => "File expenses to get reimbursements"
    }

    attr_accessor :tasks 
end

## Mary is-a person
mary = Person.new("Mary")

## Frank is-a Employee
frank = Employee.new("Frank", 120000)

# Study drill 4
puts mary.possessions[4]
puts frank.tasks["emails"]

Вот что возвращает мой терминал, когда я запускаю скрипт (в основном пустое пространство):

Macintosh:mystuff3 Vallish$ ruby ex42d.rb

Macintosh:mystuff3 Vallish$ 

Я думаю, что у меня неправильный синтаксис, или я неправильно создаю свои массивы / хэши, и я хотел бы помочь с этим.

Моя цель состоит в том, чтобы в основном попытаться передать значения из массива и хеша в классе связанным объектам, а затем вызвать эти значения.

Заранее спасибо!

1 ответ

Вы устанавливаете значение @possessions а также @tasks в неправильном месте. Они должны быть установлены внутри метода экземпляра (будь то initialize или что-то еще), а не в самом теле класса.

Другие вопросы по тегам