请教irb与正式运行ruby时的不同之处?

一,  a.rb文件代码如下:
---------------
def say
  p "hello"
end
a = 1
a.say
---------------
运行之
a.rb:5: private method `say' called for 1:Fixnum (NoMethodError)
(报错合理,say方法是Object类的私有实例方法)

二,  在irb下运行:
---------------
irb(main):001:0> def say
irb(main):002:1> p "hello"
irb(main):003:1> end
=> nil
irb(main):004:0> a = 1
=> 1
irb(main):005:0> a.say
"hello"
=> nil
---------------
(这里迷惑之,为什么a能调用say方法呢?)

继续运行
irb(main):023:0> puts Object.public_instance_methods.sort
发现say方法竟然在Object公共实例方法里面。

请问有没人能解释一下,irb和正式运行ruby时一些细致的区别

你可能感兴趣的:(C++,c,C#,Ruby)