我可以在课堂外定义@some_ivar。这个ivar属于哪个类,它的范围是什么?
例如, 我可以在example.rb中说。
@var = "Hi"
在irb中,我可以要求example.rb并访问@var
答案 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