ruby中有4个类似的变量(常量),他们分别是:
__FILE__,$FILENAME,$PROGRAM_NAME,$0
他们分别在代码中表示神马呢?我们用实际的例子说明一下:
x.rb
#!/usr/bin/ruby
load 'xx.rb'
puts __FILE__
puts $FILENAME
puts $PROGRAM_NAME
puts $0
xx.rb
#!/usr/bin/ruby
puts "*"*24
puts "in xx.rb".center(24,"*")
puts __FILE__
puts $FILENAME
puts $PROGRAM_NAME
puts $0
puts "*"*24
运行结果如下:
./x.rb mt.rb
************************
********in xx.rb********
xx.rb
mt.rb
./x.rb
./x.rb
************************
./x.rb
mt.rb
./x.rb
./x.rb
可以看出来$0和$PROGRAM_NAME永远为当前运行程序的文件名,无论其是否在load或是require中被调用,而__FILE__值在x.rb中和$0相同,但是在load中其值为被load的文件名;在require中也是被require的文件名,不过是绝对路径哦!至于$FILENAME其值为程序的文件名参数,如果文件名参数大于1个,则为第一个参数,如果该参数不是有效的文件名,则会抛出异常啊.