Как вызывать массивы из классов / объектов в 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
или что-то еще), а не в самом теле класса.