Ruby错误:未定义的方法`每个' for nil:NilClass(NoMethodError)

时间:2017-02-28 07:08:06

标签: ruby

我是红宝石初学者。我使用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)

如何解决此错误?请告诉我们!

1 个答案:

答案 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