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()
Ligne 9: en should_work_closure': undefined local variable or method
some_local_var » pour # (NameError) de t.rb: 12question de fermeture rubis (ne peut pas accéder à var)
dans 1.9.2 vous pouvez simplement aller: 'sc.define_singleton_method (: should_work_closure) {puts some_local_var} 1 – horseyguy
Cela semble effrayant, mais ce n'est certainement pas" habituellement est une mauvaise idée d'accéder aux variables locales de l'environnement portée dans les définitions de méthodes ". C'est une chose très commune à faire dans la programmation fonctionnelle. –
@JohnSalvatier Vous comparez des pommes avec des oranges. Ruby n'a pas de définitions de méthodes imbriquées, alors quand nous parlons de "variables locales de la portée environnante", nous parlons de variables locales à l'échelle globale. Nous parlons donc essentiellement de mutable (car si elles n'étaient pas destinées à être mutables, elles seraient définies comme des constantes, auxquelles on peut accéder à partir d'une méthode). Ceux-ci ne sont pas très communs dans la programmation fonctionnelle du tout. – sepp2k