Je suis confus par la définition de la liaison de bloc dans ruby. Voici deux exemples:Bloc de liaison dans Ruby
def redfine_a(&block)
a = 2
puts eval("a", block.binding)
block.call
end
a = "hello"
puts redfine_a {a}
Celui-ci pourrait fonctionner avec le résultat attendu, tandis que le second:
def redefine_a(&block)
a= 2
puts eval("a", block.binding)
block.call
end
puts redefine_a{a= "hello"}
se plaindront:
undefined local variable or method `a' for main:Object (NameError)
Après avoir enlevé le puts eval("a", block.binding)
, mon code run:
def redefine_a(&block)
a= 2
block.call
end
puts redefine_a{a= "hello"}
Où est-ce que je me trompe?