gpt4 book ai didi

Ruby Kernel#autoload 和 Module#autoload 区别

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

Kernel#autoloadModule#autoload 有什么区别?每个使用的上下文是什么?

最佳答案

正如标准文档中这些方法的源代码所示, Kernel#autoload 电话 Module#autoload 在将接收器转换到它的类之后。

当使用最常见的方法并调用 autoload 时在类里面:

class C
autoload(:M, 'm')
end

Module#autoload被调用是因为 Class < Module .因为在这种情况下接收者已经是一个 Class ' 例如,没有必要显式转换。

另一方面,可能需要调用 autoload在方法体内:

class C
def c
autoload(:M, 'm')
end
end

在后一种情况下,接收者是一个实例,除非它是 Module后代,Kernel#autoload被调用,它反过来检索这个实例的类并将调用传递给它的 Module#autoload .

关于Ruby Kernel#autoload 和 Module#autoload 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38289949/

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