gpt4 book ai didi

ruby - 为什么顶级方法在 irb 中的处理方式不同?

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:52 25 4
gpt4 key购买 nike

考虑这段代码:

def x; end
puts public_methods.include? :x

如果我在 irb 和 ruby​​ 解释器(都使用 Ruby 1.9.3)上运行它,我得到:

true # from irb
false # from ruby

为什么顶级方法在 irb 中公开定义,为什么它与 ruby 不同?

irb session

最佳答案

我可以在 Ruby 1.9.3p448 中确认这种行为。

我认为这是因为在 irb 的 repl 中,定义被包裹在单例中,所以要模仿它,只需在您的脚本中添加以下内容:

class << self
def x; end
end

puts public_methods.member? :x # true

关于ruby - 为什么顶级方法在 irb 中的处理方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17894120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com