基本ruby类查询-我需要添加一个空数组来初始化吗?

基本ruby类查询-我需要添加一个空数组来初始化吗?,ruby,Ruby,给定下面的测试代码,我们需要创建一个类和方法来使测试代码正常工作。到目前为止,我已经得到了测试代码,直到def kids和def family方法。当我在irb中运行代码时,我目前得到了家庭方法的反馈-Bobby有两个孩子:Bobby。这显然不是应该的,应该是蒂姆和萨姆被列为鲍比的孩子。我是否需要创建一个数组并将其放入initialize方法中 class Person attr_accessor :age def initialize(name, age) @name = nam

给定下面的测试代码,我们需要创建一个类和方法来使测试代码正常工作。到目前为止,我已经得到了测试代码,直到def kids和def family方法。当我在irb中运行代码时,我目前得到了家庭方法的反馈-Bobby有两个孩子:Bobby。这显然不是应该的,应该是蒂姆和萨姆被列为鲍比的孩子。我是否需要创建一个数组并将其放入initialize方法中

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