Ruby范围变量

meg*_*gas 1 ruby

这是代码:

class Something
   attr_accessor :x
   def initialize(x)
      @x = x
   end
   def get_x
      x
   end
end

something = Something.new(5)
something.get_x # => 5
Run Code Online (Sandbox Code Playgroud)

如果x只是get_x方法中的局部变量,为什么解释器返回5 ?谢谢

muf*_*sta 5

x也是一种方法. attr_accessor :x增加了x=x你的类.所以,get_x正在调用x方法,并返回值@x.有关详细信息,请参阅http://www.rubyist.net/~slagell/ruby/accessors.html.