因为时间原因, ruby的书没有读, 属于看着别人代码学习ruby的那种人。目前遇到一个关于实例变量的问题,想请教大家。先看代码
[code="ruby"]
class Test
attr_accessor :info
@info = 'who am i?'
@@info = 'who am i class?'
def change_info
@info = 'info changed'
end
def self.get_info
@info
end
def get_info
@info
end
def get_info2
@@info
end
def self.get_info2
@@info
end
end
a = Test.new
a.info = 'info1'
puts a.info
a.change_info
puts a.info
puts a.get_info
puts Test.get_info
puts a.class.get_info
puts a.get_info2
puts Test.get_info2
[/code]
运行结果:
[code="ruby"]
info1
info changed
info changed
who am i?
who am i?
who am i class?
who am i class?
[/code]
请问这个写在方法外面的@info是什么意思呢?应该不是实例变量但是也不是类变量
大家的意见呢?
[b]问题补充:[/b]
看了open2ye的回答,我想我的问题就是:
irb(main):066:0> Test2.instance_variables
=> ["@v"]
irb(main):067:0> Test2.new.instance_variables
=> []
这里Test2为什么会有instance_variables, instance是什么?如果Test2有instance variable为什么我产生了一个instance里面却又没有@v了呢?