代码之家  ›  专栏  ›  技术社区  ›  C. Ball

何时使用“if \uu FILE\uuu==$程序\u名称”

  •  2
  • C. Ball  · 技术社区  · 7 年前

    我看到许多程序被以下内容包围 if 声明:

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

    我读到它是“确保当前文件与需要执行的程序相对应”。

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

    2 回复  |  直到 7 年前
        1
  •  4
  •   Sergio Tulentsev    7 年前

    什么时候不需要?

    几乎总是这样。

    我应该在程序中何时使用此语句?

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

    # 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' 从另一个文件中,您不会。

        2
  •  3
  •   sawa    7 年前

    当代码作为库从另一个Ruby程序调用时,该条件不成立。当执行的是主程序时,该条件成立。

    有时,您希望编写可以用作库或作为主程序运行的软件,并希望使其相应地表现出不同的行为。在这种情况下,您可以使用它。

    推荐文章