如何从Ruby中的类/对象调用数组(以艰难的方式练习ruby 42)

时间:2015-09-20 23:38:20

标签: ruby learn-ruby-the-hard-way

我对Stack Overflow和Ruby都很陌生,所以如果我没有正确格式化某些东西,我会提前道歉,但我希望在通过对象调用或显示父类的数组值时提供一些帮助。

下面的代码是我正在做的任务/学习练习,作为“学习Ruby Hard the Way”一书的一部分(练习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 个答案:

答案 0 :(得分:0)

您将@possessions@tasks的值设置在错误的位置。它们应该在实例方法中设置(无论是initialize还是其他),而不是在类体本身中。