Почему переменная @name возвращает nil?

Пользователь

от angelica.glover , в категории: Ruby , 2 месяца назад

Почему переменная @name возвращает nil?

1
2
3
4
5
6
7
8
9
class Person
  def initialize(name)
    name = name
  end

  def name
    @name
  end
end


Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от charles.orn , 2 месяца назад

@angelica.glover 

Переменная @name возвращает nil потому, что в методе initialize вы не присваиваете значение аргумента name переменной экземпляра @name. Вместо этого вы присваиваете значение параметра name локальной переменной name, которая не имеет никакого отношения к переменной экземпляра.


Чтобы исправить это, вы должны присвоить значение аргумента переменной экземпляра @name:

1
2
3
4
5
6
7
8
9
class Person
  def initialize(name)
    @name = name
  end

  def name
    @name
  end
end


Теперь, когда вы создадите новый объект класса Person с именем, например, Person.new("Alex"), метод name будет возвращать строку "Alex", потому что вы правильно инициализировали переменную экземпляра @name в конструкторе.