基本ruby类查询-我需要添加一个空数组来初始化吗?
给定下面的测试代码,我们需要创建一个类和方法来使测试代码正常工作。到目前为止,我已经得到了测试代码,直到def kids和def family方法。当我在irb中运行代码时,我目前得到了家庭方法的反馈-Bobby有两个孩子:Bobby。这显然不是应该的,应该是蒂姆和萨姆被列为鲍比的孩子。我是否需要创建一个数组并将其放入initialize方法中基本ruby类查询-我需要添加一个空数组来初始化吗?,ruby,Ruby,给定下面的测试代码,我们需要创建一个类和方法来使测试代码正常工作。到目前为止,我已经得到了测试代码,直到def kids和def family方法。当我在irb中运行代码时,我目前得到了家庭方法的反馈-Bobby有两个孩子:Bobby。这显然不是应该的,应该是蒂姆和萨姆被列为鲍比的孩子。我是否需要创建一个数组并将其放入initialize方法中 class Person attr_accessor :age def initialize(name, age) @name = nam
class Person
attr_accessor :age
def initialize(name, age)
@name = name
@age = age
end
def birthday
@age += 1
end
def kids
kids = []
kids << @name
end
def family
puts "Bobby has 2 children: #{kids[0]}, #{kids[1]}"
end
end
bobby = Person.new("Bobby", 28)
bobby.age #=> 28
bobby.birthday
bobby.birthday
bobby.age #=> 30
tim = Person.new("Tim", 1)
sam = Person.new("Sam", 1)
bobby.kids << tim
bobby.kids << sam
bobby.family
#=> "Bobby has 2 children:
# => Tim,
# => Sam"
班级人员
属性存取器:年龄
def初始化(姓名、年龄)
@name=name
@年龄=年龄
结束
def生日
@年龄+=1
结束
def儿童
孩子们=[]
孩子28
鲍比,生日快乐
鲍比,生日快乐
鲍比:年龄>30岁
tim=个人。新(“tim”,1)
sam=个人。新建(“sam”,1)
bobby.kids每次调用kids时,都会覆盖kids数组并返回一个元素。所以要修正add
@孩子们=[]
给初始化器
并添加一个add_kid方法
def add_kid kid
kids << kid
end
最后把家改成
def family
puts "Bobby has 2 children: #{kids[0].name}, #{kids[1].name}"
end
这通过添加一个单独的getter和setter来解决问题,而不是尝试使用“老孩子”方法,这两种方法都尝试了谢谢Bala-但这并不能帮助我解决问题。谢谢你!这帮了我很大的忙,我现在明白了为什么我需要在initialize方法中使用数组,然后添加另一个add_kid,让当前的kids成为getter。令人惊叹的。
def family
puts "Bobby has 2 children: #{kids[0].name}, #{kids[1].name}"
end