2013-07-27 26 views
2

考虑此代码:为什么顶级方法在irb中处理方式不同?

def x; end 
puts public_methods.include? :x 

,如果我在irb运行和Ruby解释器(使用Ruby 1.9.3两者)我得到:

true # from irb 
false # from ruby 

为什么在公开定义顶级方法irb以及为什么它不同于ruby

irb session

+0

厄贝沙坦给'在我的环境FALSE'。 – sawa

+0

irb在我的环境中也是错误的。 – Fred

+0

我也在irb中获得了false – xaxxon

回答

1

我可以证实在Ruby中1.9.3p448这种行为。

我想这是因为在IRB的REPL的定义被包裹在单,所以要模仿它只是把你的脚本如下:

class << self 
    def x; end 
end 

puts public_methods.member? :x # true 
相关问题