概述参见英文答案 > What does `if __FILE__ == $0` mean in Ruby 6个 在查看Ruby中的代码时,我偶然发现了这个sintax.代码是: if __FILE__ == $PROGRAM_NAME #some code...end 我想__FILE__是一个变量,它让我知道我所在文件的名
参见英文答案 > What does `if __FILE__ == $0` mean in Ruby 6个
在查看Ruby中的代码时,我偶然发现了这个sintax.代码是:if __file__ == $PROGRAM_name #some code...end
但是什么$PROGRAM_name呢?另外,为什么这个if语句是必要的,因为程序可以使用或不使用它?
解决方法 __file__始终返回源文件的路径.它不是变量,因此您无法为其赋值.它是返回相对路径还是绝对路径取决于您运行脚本的方式.$PROGRAM_name或$0默认返回引导程序的命令(减去ruby解释器的路径).例如,你有一个脚本文件test.rb,如下所示:
#!/usr/bin/env rubyputs __file__puts $PROGRAM_name
如果您使用ruby test.rb运行此脚本,则会打印出来
test.rbtest.rb
如果使用ruby /path/to/test.rb运行脚本,则会打印
/path/to/test.rb/path/to/test.rb
如果您为脚本提供执行权限并使用./test.rb运行它,则会打印出来
./test.rb./test.rb
与__file__不同,$PROGRAM_name和$0是真正的全局变量,您可以更改它们的值. $PROGRAM_name和$0是彼此的别名,因此您更改任何一个的值,另一个的值将相应更改.例如,你有一个像这样的test2.rb:
Hello,world!Hello,world!#!/usr/bin/env ruby
= 'Hello,world!'puts puts $PROGRAM_name
它打印
总结
以上是内存溢出为你收集整理的__FILE__ == $PROGRAM_NAME在ruby中意味着什么?全部内容,希望文章能够帮你解决__FILE__ == $PROGRAM_NAME在ruby中意味着什么?所遇到的程序开发问题。
评论列表(0条)