在ruby-lang.org上给出的__FILE__ = $ 0的含义

时间:2014-12-25 12:49:42

标签: ruby

关于Ruby-Lang的简短教程说明如下:

if __FILE__ == $0

__FILE__是包含当前文件名称的魔术变量。 $0是用于启动程序的文件的名称。此检查显示“如果这是正在使用的主文件......”

这允许将文件用作库,而不是在该上下文中执行代码,但如果该文件被用作可执行文件,则执行该代码。

但上面的粗线并不清楚,因为我是Ruby的新手。

3 个答案:

答案 0 :(得分:2)

假设您的文件是foo.rb,并定义了一个Foo类。该文件可以以两种方式之一使用。

您已经熟悉的第一个是将其包含在另一个文件或IRB中。它会像:

# in otherfile.rb
require 'foo'
foo = Foo.new

if __FILE__ == $0行用于第二个用例,您可以在其中使文件可执行并直接从shell调用它。它会像

# in the shell
./foo.rb
# alternatively: ruby foo.rb

答案 1 :(得分:1)

如果您有文件

# foo.rb
if __FILE__ == $0
  puts 'foo'
else
  puts 'bar'
end

运行ruby foo.rb而不是返回'foo'

但是如果您有相同的文件和其他文件:

# bar.rb
require 'foo'

您将运行ruby bar.rb而不是'bar'

答案 2 :(得分:0)

if __FILE__ == $0
  #Do something
else
  #Do something else
end

这意味着,只有当您通过require或include加载文件时,才会执行此块中的代码。