class Sample
attr_accessor :x,:y
def initialize
@x = "x"
y = "y"
end
end
Sample.new.instance_variables => [:@x]
class Sample
attr_accessor :x,:y
def initialize
@x = "x"
self.y = "y"
end
end
Sample.new.instance_variables => [:@x, :@y]
Run Code Online (Sandbox Code Playgroud)
任何人都可以让我知道这里发生了什么.为什么y第二次是instance_variable?
attr_accessor :y 定义大致相当于的方法
def y
@y
end
def y=(val)
@y = val
end
Run Code Online (Sandbox Code Playgroud)
因此,当您指定时self.y,由于attr_accessor宏而您正在分配实例变量