0
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
some_local_var”为#(NameError) 从t.rb:12红宝石关闭问题(无法访问VAR)
in 1.9.2你可以简单地去:'sc.define_singleton_method(:should_work_closure){puts some_local_var} 1 – horseyguy 2010-10-24 12:20:31
看起来很可怕,但它肯定不是“通常从周围访问局部变量是个好主意范围在方法定义中“。在函数式编程中这是一个超常见的事情。 – 2013-05-09 01:15:00
@JohnSalvatier你在比较苹果和橘子。 Ruby没有嵌套的方法定义,所以当我们谈论“来自周边范围的局部变量”时,我们在全局范围内讨论局部变量。所以我们基本上是在讨论mutable(因为如果它们不是可变的,它们将被定义为常量,可以从一个方法中访问*)全局变量。这些在函数式编程中并不常见。 – sepp2k 2013-05-09 11:50:49