У меня есть этот код с определением класса:Instance доступ к переменному в Рубине
class Test
attr_accessor :state
@state = 4
def check_state
puts "state is #{@state}"
end
end
obj = Test.new
obj.check_state
Там нет выхода из переменного экземпляра значения.
Но если я вызову obj.state = 4 до obj.check_state, я получу «состояние 4».
Почему?
Спасибо.
поэтому единственное различие между переменной экземпляра и переменной экземпляра класса, это один внутри метода экземпляра, а другой внешний метод экземпляра? – totally
Kinda. Классы - это сами экземпляры, и как таковые могут иметь переменные экземпляра. Существуют также переменные класса (например, '@@ state'), но они ведут себя по-разному наследование WRT. –
Нет никакой разницы между переменными экземпляра и переменными экземпляра класса, потому что нет такой вещи, как переменная экземпляра класса. Классы - это объекты, подобные любому другому объекту, поэтому они могут иметь переменные экземпляра, как и любой другой объект. В этом нет ничего особенного или иного. –