这里我有两个文件:
file.rb
def method
puts "This won't be outputted."
end
puts "This will be outputted."
main.rb
require "./file"
运行 main.rb 时,它将加载 file.rb 中的所有代码,因此我会得到“这将被输出”。屏幕上。
是否可以在不运行代码的情况下加载文件?
因为我想加载所有方法(也在模块和类中),而不必在这些范围之外执行代码。
是否可以在不运行代码的情况下加载文件?
不,ruby 文件中的所有内容都是可执行代码,包括类和方法定义(例如,当您尝试在 if 语句内定义方法时,您可以看到这一点,它工作得很好)。因此,如果您不执行文件中的任何内容,则不会定义任何内容。
但是,您可以告诉 ruby,某些代码仅在文件直接运行时才执行,而不是在需要时执行。为此,只需将有问题的代码放入if __FILE__ == $0
堵塞。因此,对于您的示例,这将有效:
file.rb
def method
puts "This won't be outputted."
end
if __FILE__ == $0
puts "This will not be outputted."
end
main.rb
require "./file"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)