我是红宝石初学者。我使用proc类但我收到错误。
class Timeline
attr_accessor :tweets
def each(&block) # Block into the proc
tweets.each(&block) # proc back into the block
end
end
timeline = Timeline.new(tweets)
timeline.each do |tweet|
puts tweet
end
得到错误: -
`each': undefined method `each' for nil:NilClass (NoMethodError)
如何解决此错误?请告诉我们!
答案 0 :(得分:1)
定义attr_accessor :tweets
时,只需定义2个实例方法:
def tweets
@tweets
end
def tweets=(tweets)
@tweets = tweets
end
当您在tweets
方法中调用each
时,只需使用此名称调用方法,而不是局部变量,因此您应该在initialize
方法中设置@tweets,因为现在您的@tweets
变量未设置:
class Timeline
attr_accessor :tweets # this is just a nice syntax for instance variable setter
# and getter
def initialize(tweets)
@tweets = tweets
end
def each(&block) # Block into the proc
tweets.each(&block) # proc back into the block
end
end