如果我加载x.rb
,then all the classes in that file are loaded 。是否可以检查并查看正在使用哪些类并仅加载这些类?
假设x.rb同时包含Hello和Goodbye类,而我的程序只使用Hello类,是否可以只加载Hello类?
对检查文档的脚本感到满意,并输出一个仅包含 Hello 类和使用它的代码的 .rb...如果不存在的话,这将是一个有趣的 github 项目,但我认为它已经超出了我的 ATM 技能。
最佳答案
当类在其自己的单独文件中定义时,您可以使用 autoload
12方法:
autoload :Hello, 'x/hello'
autoload :Goodbye, 'x/goodbye'
当您编写Hello
时,您实际上正在访问Hello
常量。如果未定义常量,autoload
使用 const_missing
自动请求文件。
请注意,我们仍在此处处理文件。 x/hello.rb
的内容将被简单地读取和评估。该代码可以运行任何操作。它可以需要
其他文件。它可以定义一百万个其他类。
那是因为源代码实际上只是文本。对于解释语言尤其如此。例如,in Java, you can usually only declare one public type per "compilation unit" 。在 Ruby 中,没有这样的事情。
关于ruby - 只加载 Ruby 中正在使用的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10002405/