我 ruby 1.8.7,为什么我可以在 main 中使用 require,但不能使用 self.require?
require('date') # ok
self.require('date')
NoMethodError: private method `require' called for main:Object
from (irb):22
from /usr/lib/ruby/1.8/date.rb:437
众所周知,main 是 Object 类:irb(main):045:0> self => main
irb(main):043:0> self.class
=> Object
但我发现它有内核混合:
irb(main):042:0> self.class.included_modules
=> [Kernel]
此外,我发现 require 是 self 的私有方法:
irb(main):037:0> self.private_methods
=> [... "require", ...]
同样,我不能使用 self.attr_accessor:
irb(main):051:0> class X
irb(main):052:1> self.attr_accessor(:ssss)
irb(main):053:1> end
NoMethodError: private method `attr_accessor' called for X:Class
from (irb):52
from /usr/lib/ruby/1.8/date.rb:437
它是怎么发生的?有人可以澄清这些问题吗?