加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

__FILE__ == $PROGRAM_NAME在ruby中意味着什么?

发布时间:2020-12-17 01:36:24 所属栏目:百科 来源:网络整理
导读:参见英文答案 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

我想__FILE__是一个变量,它让我知道我所在文件的名称?
但是什么$PROGRAM_NAME呢?另外,为什么这个if语句是必要的,因为程序可以使用或不使用它?

解决方法

__FILE__始终返回源文件的路径.它不是变量,因此您无法为其赋值.它是返回相对路径还是绝对路径取决于您运行脚本的方式.

$PROGRAM_NAME或$0默认返回引导程序的命令(减去ruby解释器的路径).例如,你有一个脚本文件test.rb,如下所示:

#!/usr/bin/env ruby
puts __FILE__
puts $PROGRAM_NAME

如果您使用ruby test.rb运行此脚本,则会打印出来

test.rb
test.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:

#!/usr/bin/env ruby
$0 = 'Hello,world!'
puts $0
puts $PROGRAM_NAME

它打印

Hello,world!
Hello,world!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读