当谈到更高级的功能时,我有点像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)
我不会立即明白为什么它不起作用。有人可以开导我吗?
答案 0 :(得分:3)
您没有在班级@printer
方法中设置initialize
。这个工作:
class Tester
def initialize
@printer = Proc.new { |t| puts t }
end
attr_accessor :printer
end