班级以外的红宝石

时间:2012-02-01 20:21:16

标签: ruby

我可以在课堂外定义@some_ivar。这个ivar属于哪个类,它的范围是什么?

例如, 我可以在example.rb中说。

@var = "Hi"

在irb中,我可以要求example.rb并访问@var

1 个答案:

答案 0 :(得分:7)

该var属于名为main的顶级对象。

$ irb
1.9.3p0 :001 > @var = 'Hi'
 => "Hi" 
1.9.3p0 :002 > self
 => main 
1.9.3p0 :003 > @var
 => Hi

main基本上是一个具有有趣属性的对象:在其上下文中定义的任何方法(在“普通”类之外)都可用于所有对象。

$ irb
1.9.3p0 :001 > def foo
1.9.3p0 :002?>   1
1.9.3p0 :003?> end
 => nil 
1.9.3p0 :004 > Object.new.foo
 => 1 
1.9.3p0 :005 > "".foo
 => 1