为什么这个实例变量超出了范围?

时间:2016-08-25 01:52:35

标签: ruby

为什么@test超出了Aclass的范围?调用a.print_test时,我会@test未定义。

class Aclass
  def print_test
    puts "@test from Aclass: " + @test
  end
end

a = Aclass.new
#a.print_test

#but still in scope here
puts "After print_test call: " + @test

在旁注中,任何人都知道如何获取运行代码按钮?我没有在工具栏中看到它。

1 个答案:

答案 0 :(得分:2)

@var是访问类的当前实例或self上的实例变量的简便方法。

@test = 'what'
puts self
puts self.instance_variable_get :@test

class Aclass
  def print_test
    puts self
    puts self.instance_variable_get :@test
  end
end

a = Aclass.new
a.print_test

因此范围在主程序和类的实例之间发生了变化。