考虑此代码:
def x; end
puts public_methods.include? :x
如果我在irb
和ruby解释器(都使用Ruby 1.9.3)上运行它,我得到:
true # from irb
false # from ruby
为什么在irb
中公开定义顶级方法,为什么它与ruby
不同?
答案 0 :(得分:1)
我可以在Ruby 1.9.3p448中确认这种行为。
我认为这是因为在irb的repl中,定义包含在单例中,所以要模仿它只是将以下内容放在脚本中:
class << self
def x; end
end
puts public_methods.member? :x # true