如何在ruby中将父实例值传入子类?

时间:2018-09-17 05:59:19

标签: ruby

我无法将父类的实例值获取到子类,我的代码是这样的。

class TimeLine
    attr_accessor :tweets
    def initialize(tweets=[])
        @tweets = tweets
    end
    def print
        puts tweets.join("\n")
    end
end

class AuthenticateTimeLine < TimeLine
    def print
        authenticate!
        super
    end
    def authenticate!
        puts "authenticated!"
    end
end
TimeLine.new([1,2,3,4,5])
authenticate_timeline = AuthenticateTimeLine.new
authenticate_timeline.print

当我在子类上调用super时,我得到的是空数组。

1 个答案:

答案 0 :(得分:1)

这是因为您使用空数组对其进行了初始化,因此没有将任何参数传递给AuthenticateTimeLine.new,因此采用了默认的[](比较您的TimeLine#initialize方法)。如果您将数组作为参数传递,那么它将起作用:

authenticate_timeline = AuthenticatateTimeLine.new([1,2,3,4,5])
authenticate_timeline.print
# 'Works' now!