一, 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时一些细致的区别
---------------
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时一些细致的区别