1
我可以在班級外面定義@some_ivar。這個ivar屬於哪一類,它的範圍是什麼?ruby ivar以外的班級
例如, 我可以example.rb說
@var = "Hi"
和IRB,我可以要求example.rb和訪問@var
我可以在班級外面定義@some_ivar。這個ivar屬於哪一類,它的範圍是什麼?ruby ivar以外的班級
例如, 我可以example.rb說
@var = "Hi"
和IRB,我可以要求example.rb和訪問@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
感謝。 man .... ruby很奇怪(好方法:P) – 0xSina 2012-02-01 20:45:55
至少在Ruby 1.9.2中,'main'中定義的方法似乎是對象的私有方法( - >'private method'foo'called for# <對象:0x0000020bf539c8>')。 – 2012-02-01 21:38:52