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

ruby闭包问题(无法访问var)

  •  0
  • clyfe  · 技术社区  · 14 年前
    class SomeClass
    end
    
    some_local_var = 5
    
    sc = SomeClass.new
    
    def sc.should_work_closure
      puts some_local_var # how can I access "some_local_var", # doesn't this work like a closure ?
    end
    
    sc.should_work_closure()
    

    第9行:输入 should_work_closure': undefined local variable or method 来自t.rb:12

    1 回复  |  直到 14 年前
        1
  •  0
  •   sepp2k    14 年前

    不, def 不能像关闭一样工作。

    sc 可在 定义 你可以使它成为一个常数,使它成为全局的(通常是一个坏主意),或者使用 define_method 有一个块(闭包)。

    定义方法 class_eval 关于的特征类 进入教室。

    例子:

    class <<sc; self end.class_eval
      define_method(:should_work_closure)
        puts some_local_var
      end
    end
    

    推荐文章