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рубиновый вопрос закрытия (не может получить доступ к вар)
в 1.9.2 вы можете просто пойти: 'sc.define_singleton_method (: should_work_closure) {ставит some_local_var} 1 – horseyguy
Это выглядит страшно, но это, безусловно, не«как правило, это плохая идея, чтобы получить доступ к локальным переменным из окружающих объем в определениях методов ". Это очень обычное дело в функциональном программировании. –
@JohnSalvatier Вы сравниваете яблоки с апельсинами. Ruby не имеет вложенных определений методов, поэтому, когда мы говорим о «локальных переменных из окружающей области», мы говорим о локальных переменных в глобальной области. Поэтому мы в основном говорим об изменчивости (потому что, если они не должны быть изменчивыми, они будут определяться как константы, к которым можно получить доступ из глобальных методов. Это не очень распространено в функциональном программировании. – sepp2k