Existen métodos para listar los nombres (como cadenas) de
~/chapter8ReflectionandMetaprogramming$ cat -n variablesAndConstants.rb
1 class Tutu
2 def initialize(x,y); @x, @y = x, y; end
3 @@classvar = 1
4 ORIGIN = Tutu.new(0, 0)
5 end
6
7 puts "Globals variables with 'D': "
8 puts(" "+global_variables.select { |w| w =~/D/ }.inspect) # [:$KCODE, :$LOAD_PATH, :$LOADED_FEATURES, :$DEBUG]
9 x = 1
10 puts "Local variables:"
11 puts " #{local_variables.inspect}" # [:x]
12
13 puts "Instance variable names: "
14 Tutu::ORIGIN.instance_variables.each { |v|
15 puts " #{v}" # @x @y
16 }
17 puts "Class variables names: "
18 Tutu.class_variables.each { |v|
19 puts " #{v}" # @@classvar
20 }
21 puts "Constant names: "
22 Tutu.constants.each { |c|
23 puts " #{c}" # ORIGIN
24 }
Ejecución:
~/chapter8ReflectionandMetaprogramming$ ruby variablesAndConstants.rb Globals variables with 'D': ["$KCODE", "$LOAD_PATH", "$DEBUG", "$LOADED_FEATURES"] Local variables: ["x"] Instance variable names: @x @y Class variables names: @@classvar Constant names: ORIGIN