Прежде всего, в ruby есть то, что он допускает другой синтаксис, который широко используется кодировщиками ruby.Идентификаторы с заглавной буквы - это Classes или Constants (спасибо sepp2k за его комментарий), но вы пытаетесь сделать его объектом.И почти никто не использует {}
, чтобы пометить многострочный блок.
a = Object.new
if (something happens)
# do something
end
Я не уверен, что ваш вопрос, но у меня есть идея, и это было бы решением:
Если вы знаете, какие атрибуты могут иметь этот класс, и он ограничен, вы должны использовать
class YourClass
attr_accessor :age
end
attr_accessor :age
- это сокращение:
def age
@age
end
def age=(new_age)
@age = new_age
end
Теперь вы можете сделать что-то вроде этого:
a = YourClass.new
if (some condition)
a.age = new_value
end
Если вы хотите сделать это полностью динамично, вы можете сделать что-то вроде этого:
a = Object.new
if (some condition)
a.class.module_eval { attr_accessor :age}
a.age = new_age_value
end