代码之家  ›  专栏  ›  技术社区  ›  StackedCrooked

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

  •  0
  • StackedCrooked  · 技术社区  · 15 年前

    说到更高级的功能,我有点像RubyNoob。目前我正在使用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 回复  |  直到 15 年前
        1
  •  3
  •   mipadi    15 年前

    你没有设置 @printer 在班里 initialize 方法。这会起作用:

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