Variables and Constants
Kernel, Object, and Moduledefine reflective methods for
listing the names (as strings) of all defined global variables,
currently defined local variables, all instance variables of an object,
all class variables of a class or module, and all constants of a class
or module:
global_variables # => ["$DEBUG", "$SAFE", ...] x = 1 # Define a local variable local_variables # => ["x"] # Define a simple class class Point def initialize(x,y); @x,@y = x,y; end # Define instance variables @@classvar = 1 # Define a class variable ORIGIN = Point.new(0,0) # Define a constant end Point::ORIGIN.instance_variables # => ["@y", "@x"] Point.class_variables # => ["@@classvar"] Point.constants # => ["ORIGIN"]
The global_variables, local_variables, instance_variables, class_variables, and constants methods return arrays of strings in
Ruby 1.8 and arrays of symbols in Ruby 1.9.
Querying, Setting, and Testing Variables
In addition to listing defined variables and constants, Ruby
Object and Module also define reflective methods for
querying, setting, and removing instance variables, class variables, and
constants. There are no special purpose methods for querying or
setting local variables or global variables, but you can use the
eval method for this
purpose:
x = 1
varname = "x"
eval(varname) # => 1
eval("varname = '$g'") # Set varname to "$g"
eval("#{varname} = x") # Set $g to 1
eval(varname) # => 1
Note that eval evaluates its
code in a temporary scope. eval can alter the value of local ...