Un bloc hereta elcontext del qual és executat d’ahí que es compare amb el concepte de closures
en altres llenguatges.
Notar que la variable no ha estat declarada dins del bloc ni com argument. Però el bloc té accés a aquesta variable perquè el bloc és on s’executa .
def hola
yield
end
nombre = "Uriel"
hola { puts "Hola #{nombre}" }
Altra manera
def hola
yield
end
nombre = "Uriel"
hola do
nombre = "Marcos"
puts "Hola #{nombre}"
end
puts nombre
Output
Hola Marcos
Marcos
El valor que li va ser assignat es manté fora del block.
També els blocs poden definir variables locals del mateix. Explicació en video.