gpt4 book ai didi

ruby - 为什么 foo 不再是 nil - 或函数内函数

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

为什么在下面的代码片段中 foo 替换了它的定义?

def foo
def foo
1
end
end

第一次 foo 为 nil

foo
=> nil

foo.foo
=> 1

现在,如果我再次调用 foo:

foo
=> 1

如您所见,foo 不再是 nil。谁可以给我解释一下这个?谢谢。

最佳答案

def foo
p "about to redef foo"
def foo
1
end
end
foo
"about to redef foo"
=> nil
foo
=> 1

此外,当您调用 foo.foo 时,您似乎在尝试访问内部的 foo 方法,但实际上并非如此。您的 foo 方法实际上是在 Object 上定义的,因此您实际上是在调用 1.foo

关于ruby - 为什么 foo 不再是 nil - 或函数内函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13748152/

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