In Ruby 2.2, the binding
object gives us access to a method
#local_variables
which returns the symbol names of the binding's local
variables. We can see this in action with
def square(x)
puts binding.local_variables.inspect
x.times do |a|
puts binding.local_variables.inspect
end
z = x * x
puts binding.local_variables.inspect
z
end
square(2)
which results in
[:x, :z]
[:a, :x, :z]
[:a, :x, :z]
[:x, :z]
=> 4