ruby - 何时使用 'if __FILE__ == $PROGRAM_NAME'

标签 ruby

我看到许多程序被以下 if 语句包围:

if __FILE__ == $PROGRAM_NAME
  # rest of the program
end

我读到它是“确保当前文件对应于需要[被]执行的程序”。

我什么时候应该在我的程序中使用这个语句?我应该在什么情况下使用它?什么时候不需要?

最佳答案

when is it not necessary?

几乎总是。

when should I use this statement in my programs?

当您有一个主要由其他文件使用的文件,但有时您想直接运行该文件。在这种情况下,这部分代码通常会进行一些测试或示例使用。

# 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,您将看到调试/测试输出。如果您只是需要来自另一个文件的“动物”,则不会。

关于ruby - 何时使用 'if __FILE__ == $PROGRAM_NAME',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48690284/

相关文章:

Ruby 组合两个数组导致进程耗尽内存

ruby - 在 heroku 的静态网站中加载 css 文件

ruby-on-rails - validate_presence_of 不会产生 'can' t be Blank' 错误

javascript - 如何在 JavaScript 中声明默认值为 0 的 Hash.new(0) 来计数对象?

ruby - 如何从出现在数组中的字符串中选择整个单词?

arrays - Ruby——当我调用一个数组的方法时,是否需要将方法中的参数指定为数组的名称?

ruby - 在 Ruby 中重新排列一维列表

ruby-on-rails - Rails 简单表单必填字段不起作用

ruby - 如何在我的数据库中存储哈希值?

ruby - 如何使用 `business_time` gem 获取一个月的最后一个工作日