В таком варианте я не могу получить доступ к переменной name из обрамляющей функции:
def closure
name = "локальная"
puts "перед блоком"
yield(name) # name = yield(name)
puts "после блока"
puts name
end
closure do |word|
puts "Внутри блока."
word = word + " добавка от блока"
puts word
puts "Выход из блока."
# word
end
Вывод:перед блоком
Внутри блока.
локальная добавка от блока
Выход из блока.
после блока
локальная
В name обрамляющей функции останется "локальная добавка от блока" только, если некоторые строки заменить комментариями, а их - закомментировать. Но почему так? Значит блоки - не полноценные замыкания?