我看到许多程序被以下if
声明所包围:
if __FILE__ == $PROGRAM_NAME
# rest of the program
end
我读到“确保当前文件对应于需要执行的程序”。
我应该何时在程序中使用此声明?在什么情况下我应该使用它?什么时候没必要?
答案 0 :(得分:3)
什么时候没必要?
几乎总是。
我什么时候应该在我的程序中使用此语句?
如果您的文件主要由其他文件使用,但有时您希望直接运行该文件。在这种情况下,代码的这一部分通常会进行一些测试或示例使用。
# animal.rb
class Animal
def voice
raise NotImplementedError
end
end
class Dog < Animal
def voice
'Woof!'
end
end
if __FILE__ == $PROGRAM_NAME
puts "testing voice"
puts Dog.new.voice == 'Woof!'
end
如果您运行ruby animal.rb
,您将看到调试/测试输出。如果您只是require 'animal'
来自其他文件,则不会。
答案 1 :(得分:2)
当代码从另一个Ruby程序作为库调用时,该条件不成立。当它是执行的主程序时,该条件成立。
有时,您希望对可以用作库或作为主程序运行的软件进行编程,并希望使其具有相应的行为方式。在这种情况下,您可以使用它。