gpt4 book ai didi

ruby - 运行脚本与 IRB 控制台时的不同行为?

转载 作者:数据小太阳 更新时间:2023-10-29 06:44:35 25 4
gpt4 key购买 nike

我有一个简单的代码片段,它定义了一个方法(在 Ruby 的主对象上),然后检查它是否已定义。

puts "#{self} #{self.class}"
def foo;end
puts self.methods.include?(:foo)

当我在 Ruby 控制台中运行它时。我得到:

main Object
true

如果我将此代码粘贴到 .rb 文件中并像这样运行该文件 ruby test_script.rb,我会得到以下输出

main Object
false

我不明白为什么我会看到这种行为。方法正在在脚本中定义,因为我可以调用该方法。

我都在 Ruby 2.3.4 上运行

最佳答案

为了方便起见,IRB 将顶层范围内的方法绑定(bind)到 main 作为公共(public)方法,但常规 Ruby 程序将顶层范围内定义的方法绑定(bind)到 main 作为私有(private)方法。

您可以在这里找到引用 Ruby main top level context

关于ruby - 运行脚本与 IRB 控制台时的不同行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49171953/

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