callables/block_local_before_assignment.rb
tests/_examples/callables/block_local_before_assignment.rb in the metorex repository.
def written_before_the_assignment
block = proc { counted = 99; counted }
counted = 1
[block.call, counted].inspect
end
puts(written_before_the_assignment)
def written_after_the_assignment
counted = 1
block = proc { counted = 99; counted }
[block.call, counted].inspect
end
puts(written_after_the_assignment)
collected = Enumerator.new do |yielder|
answered = yielder.yield(3)
yielder << answered << 2 << 1
end
answered = []
collected.each { |value| answered.push(value); value * 2 }
puts(answered.inspect)
def reads_a_later_local_from_a_rescue
begin
raise("stopped")
rescue RuntimeError
return held.inspect
end
held = 1
end
puts(reads_a_later_local_from_a_rescue)
Output:
[99, 1]
[99, 99]
[3, 6, 2, 1]
nil