我可以在课外定义@some_ivar.这个ivar属于哪个类,它的范围是什么?
例如,我可以在example.rb中说
@var = "Hi"
Run Code Online (Sandbox Code Playgroud)
在irb中,我可以要求example.rb并访问@var
该var属于一个名为的顶级对象main.
$ irb
1.9.3p0 :001 > @var = 'Hi'
=> "Hi"
1.9.3p0 :002 > self
=> main
1.9.3p0 :003 > @var
=> Hi
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)