“模块自动加载”和“模块自动加载”在ruby中是如何工作的?

“模块自动加载”和“模块自动加载”在ruby中是如何工作的?,ruby,Ruby,Module#autolad和Module#autoload?的工作原理仅通过阅读以下内容无法理解: 模块#自动加载:注册第一次在mod命名空间中访问该模块(可能是字符串或符号)时要加载的文件名(使用Kernel::require) 模块#自动加载?-如果名称在mod的命名空间中注册为自动加载,则返回要加载的文件名。 有人能帮我用一些小的代码示例来理解这个概念吗 基本上,自动加载是第一次使用常量时加载ruby文件的一种方式。这对于第一次使用常量时的“延迟加载”或“即时加载”非常有用。有关详细信息

Module#autolad
Module#autoload?
的工作原理仅通过阅读以下内容无法理解:

模块#自动加载:注册第一次在mod命名空间中访问该模块(可能是字符串或符号)时要加载的文件名(使用Kernel::require)

模块#自动加载?-如果名称在mod的命名空间中注册为自动加载,则返回要加载的文件名。 有人能帮我用一些小的代码示例来理解这个概念吗


基本上,自动加载是第一次使用常量时加载ruby文件的一种方式。这对于第一次使用常量时的“延迟加载”或“即时加载”非常有用。有关详细信息,请参阅。

示例:

$ echo 'class AutoloadDemo; end' > autoload_demo.rb
$ ruby -e "
> p autoload? :AutoloadDemo
> p defined?(AutoloadDemo)
> autoload :AutoloadDemo, './autoload_demo'
> p autoload? :AutoloadDemo
> p defined?(AutoloadDemo)
> p AutoloadDemo
> "
nil
nil
"./autoload_demo"
"constant"
AutoloadDemo
说明:
autoload
为常量(即
autoload
方法的参数符号)注册“延迟加载”;当脚本中遇到由该符号表示的costant(在示例中为
autoloaddmo
)时,Ruby需要与该常量关联的文件(autoload的第二个参数)<代码>自动加载?只不过是“此常量是否已注册为自动加载”问题的答案


经常登记 在Ruby中,常量是一个在程序执行期间应该相同的值;它必须以大写字符开头

当您调用
autoload
时,Ruby解释器会执行常量注册:它说

好的,当我在下一次执行中遇到这个常数时,如果它是 未定义,我需要此文件并查看,而不是引发NameError 是否定义了常数;如果是这样,我将继续执行


register
constant
这些词在文档中让我很困惑。你能单独解释一下吗?