def method
a = 3
b = 4
some_method_that_gives # [a, b]
end
How to list local-variables in Ruby?
Asked Answered
It outputs array of symbols, presenting variables. In your case: [:a, :b]
Can't believe I didn't find it before. Thanks! –
Saad
Some versions of Ruby output an array of strings instead of an array of symbols. Ruby 2.0 and 1.9 use symbols, but Ruby 1.8.7 used strings. –
Weeden
local_variables
lists local variables but it lists them before they are defined. See this:
p local_variables
a = 1
p local_variables
this outputs
[:a]
[:a]
which may not be what you expect. Contrast with defined?
p defined? a
a = 1
p defined? a
which outputs the more anticipated
nil
"local-variable"
if you're looking for the list with their values:
variables = self.local_variables.each_with_object({}) { |key, hash| hash[key] = binding.local_variable_get(key) }
To avoid using
eval
you can use Binding#local_variable_get
instead. I modified you solution like this: local_variables.each_with_object({}) { |key, hash| hash[key] = binding.local_variable_get(key) }
–
Lento © 2022 - 2024 — McMap. All rights reserved.