Вы можете установить переменную экземпляра в любом методе вашего класса.
initialize
- это метод, который выполняется сразу после вызова Person.new
.
Все внешние данные для нового объекта передаются через аргументы .new(args)
.
Ваша линия @age = age
- это то же самое, что @age = nil
.
Это связано с тем, что age
отсутствует в аргументах initialize
.
Также у вас есть attr_accessor :age
.
Равно, что у вас есть методы:
def age
@age
end
def age=(age)
@age = age
end
Таким образом, вы можете установить переменную экземпляра следующим образом:
john = Person.new('John')
p john.age #=> nil
john.age = 5
p john.age #=> 5