Ruby Proc对象作为公共成员变量不起作用?

时间:2009-11-04 20:04:38

标签: ruby

当谈到更高级的功能时,我有点像Ruby noob。目前我正在体验Proc对象。有人能告诉我这个代码示例有什么问题吗?

class Tester
  @printer = Proc.new do |text|
    puts text
  end
  attr_accessor :printer
end

t = Tester.new
t.printer.call("Hello!")

它给了我以下错误:

Test.rb:10: undefined method `call' for nil:NilClass (NoMethodError)

我不会立即明白为什么它不起作用。有人可以开导我吗?

1 个答案:

答案 0 :(得分:3)

您没有在班级@printer方法中设置initialize。这个工作:

class Tester
  def initialize
    @printer = Proc.new { |t| puts t }
  end
  attr_accessor :printer
end