ruby中__FILE__,$FILENAME,$PROGRAM_NAME,$0等类似变量的含义
2014-07-30 13:58
519 查看
ruby中有4个类似的变量(常量),他们分别是:
__FILE__,$FILENAME,$PROGRAM_NAME,$0
他们分别在代码中表示神马呢?我们用实际的例子说明一下:
x.rb
xx.rb
运行结果如下:
可以看出来$0和$PROGRAM_NAME永远为当前运行程序的文件名,无论其是否在load或是require中被调用,而__FILE__值在x.rb中和$0相同,但是在load中其值为被load的文件名;在require中也是被require的文件名,不过是绝对路径哦!至于$FILENAME其值为程序的文件名参数,如果文件名参数大于1个,则为第一个参数,如果该参数不是有效的文件名,则会抛出异常啊.
__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个,则为第一个参数,如果该参数不是有效的文件名,则会抛出异常啊.
相关文章推荐
- ruby中__FILE__,$FILENAME,$PROGRAM_NAME,$0等类似变量的含义
- ruby中__FILE__,$FILENAME,$PROGRAM_NAME,$0等类似变量的含义
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- 使用 OPENFILENAME 以及 GetOpenFileName、GetSaveFileName 实现打开,保存对话框
- linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- VSCode tasks.json中的各种替换变量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等
- rubyzip NameError (uninitialized constant Zip::File Did you mean? File)
- @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义(转载)
- Shell中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义(给脚本传递参数)
- 使用GetOpenFileName和GetSaveFileName函数会改变当前目录的问题
- makfile 中 $$ 变量的含义
- Linux shell中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- VSCode launch.json中的各种替换变量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等
- shell脚本中变量$$、$0等的含义
- Linux中变量$#,$@,$0,$1,$2,,$3,$4,$5,$6,$7,$8,$9,$*,$$,$?的含义
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义