Конечно, есть разница между self.i
и @i
:
@i
вернет значение, присвоенное переменной @i
. - Принимая во внимание, что
self.i
вернет значение, которое было возвращено методом с именем i
.
В вашем классе Animal
не определен метод i
, поэтому ошибкасообщение верное.
Если вы хотите, чтобы self.i
вернул значение переменной @i
, вам нужно создать метод i
, подобный этому
def i
@i
end
или просто использоватьмакрос attr_reader
, подобный следующему:
class Animal
attr_reader :i
#...
end