Dynamics of Variables

Для работы с переменными в метапрограммировании существуют следующие методы.

для констант -

class Person
MAX_YEARS_OLD = 120
end

# получение значения константы
Person.const_get('MAX_YEARS_OLD')
# => 120

# задание значения
Person.const_set('MAX_YEARS_OLD', 140)
# => warning: already initialized constant Person::MAX_YEARS_OLD

# проверка существования
Person.const_defined?("MAX_YEARS_OLD")
# => true

для инстансных переменных -

class Person
def initialize
@age = 37
end
end

person = Person.new

# получение значения инстансной переменной
person.instance_variable_get(:@age)
# => 37

# задание значения
person.instance_variable_set(:@age, 140)
# => 140

# проверка существования
person.instance_variable_defined?(:@age)
# => true

для переменных класса -

class Person
def initialize
@@max_age = 140
end
end

# получение значения инстансной переменной
Person.class_variable_get(:@@max_age)
# => 140

# задание значения
Person.class_variable_set(:@@max_age, 120)
# => 120

# проверка существования
Person.class_variable_defined?(:@@max_age)
# => true