gpt4 book ai didi

ruby - 有人可以解释一下代码是如何工作的吗

转载 作者:行者123 更新时间:2023-12-03 03:49:11 25 4
gpt4 key购买 nike

有一些代码:

def func
def func
1
end
end

然后我在irb中尝试以下操作:

func
func.func
func

并得到结果:

:func
1
1

谁能解释一下这是怎么回事吗?我有点理解第一个输出,但不理解后者。谢谢!

最佳答案

您可以在全局范围内的方法内定义方法。方法定义返回一个带有其名称的符号。

  1. 当您第一次调用 func 时,它会由内部 func 重新定义。这就是为什么后续调用 func 返回 1
  2. 方法定义返回一个符号,您可以在该符号上调用任何全局定义的方法,这就是您可以调用 func.func 的原因。尝试定义其他方法,您将能够在任何符号上调用它:
def func
def func
1
end
end
def a
'a'
end
func.a
# 'a'
:asd.a
# 'a'

关于ruby - 有人可以解释一下代码是如何工作的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58415458/

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