Переменная экземпляра RUBY инициализируется при вызове другого метода - PullRequest
0 голосов
/ 14 февраля 2019

почему переменная экземпляра @my_instance возвращает ноль, хотя я и думал, что в my_method установлено значение 0?

attr_accessor должен позволить мне написать и прочитать экземпляр, верно?

что будетправильный способ сделать что-то подобное?

спасибо.

class Myclass

  attr_accessor :my_instance

  def initialize
    @my_instance
  end 

  def called_method
    puts "this is my instance value #{my_instance} "
  end 

  def my_method
    my_instance = 0
    puts "i set my instance to be #{my_instance}"
    called_method
  end 

end 

a = Myclass.new

a.my_method

named_method вернет ноль, когда я ожидаю 0

1 Ответ

0 голосов
/ 14 февраля 2019

что было бы правильным способом сделать что-то подобное?

my_instance = 0

Это создает локальную переменную вместо вызова вашего установщика.Дайте ruby ​​подсказку, что вы хотите вызвать метод:

self.my_instance = 0

Или вы можете установить переменную экземпляра напрямую:

@my_instance = 0
...