gpt4 book ai didi

ruby - 为什么在顶层定义一个方法会影响其他用户定义的类?

转载 作者:数据小太阳 更新时间:2023-10-29 08:53:08 24 4
gpt4 key购买 nike

如果我像这样定义顶级方法:

def inspect(x)
# do something useful...
end

然后在用户定义的类上调用 #inspect 停止工作:

class Foo; end
p Foo.new # `inspect': wrong number of arguments (0 for 1) (ArgumentError)

但是,它仍然适用于 NilClassString 类:

p nil    # prints 'nil'
p "test" # prints '"test"'

我认为对此行为的一种解释可能是顶级执行可能在 Object 类本身中,但事实证明它在 Object 的实例中> 称为 main。这是否意味着此处定义的方法不应影响其他类?

最佳答案

main 是一个特殊的地方。在那里定义的任何方法都被定义为 Object 的私有(private)实例方法。这样您就可以定义可以在任何上下文中调用而无需显式接收器的伪函数。

关于ruby - 为什么在顶层定义一个方法会影响其他用户定义的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7763577/

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