Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
考虑到这段代码:
def x; end puts public_methods.include? :x
如果我运行它irb和 ruby 解释器(都使用 Ruby 1.9.3)我得到:
irb
true # from irb false # from ruby
为什么顶级方法在 中公开定义irb,为什么它不同于ruby?
ruby
我可以在 Ruby 1.9.3p448 中确认这种行为。
我认为这是因为在 irb 的 repl 中,定义被包裹在单例中,所以要模仿它,只需在脚本中添加以下内容:
class << self def x; end end puts public_methods.member? :x # true