Ruby中的$:是什么意思?

5
我正在阅读以下 tutorial
它讲述了如何在 Ruby 文件中使用 require 包含文件:
require(string) => true 或 false Ruby 尝试加载名为 string 的库,如果成功返回 true。如果文件名没有解析为绝对路径,则会在 $: 中列出的目录中搜索。如果文件的扩展名为 .rb,则将其作为源文件加载;如果扩展名为 .so、.o 或 .dll,或者是当前平台上默认的共享库扩展名,则 Ruby 会将共享库作为 Ruby 扩展加载。否则,Ruby 会尝试添加 .rb、.so 等到名称中。已加载功能的名称将添加到 $: 数组中。
我只想知道 Ruby 中的 $: 是什么意思。

请查看我的更新帖子。我指的是 $: - Joe.wang
1
将别名设置为$load_path。请查看http://www.softlab.ntua.gr/facilities/documentation/unix/ruby-man-1.4/variable.html。 - maximus ツ
$: 是 Ruby 的预定义变量之一。 - Stefan
@maximus,这是$LOAD_PATH,Ruby是大小写敏感的。 - Stefan
2
可能是在 Ruby 中 "$:" 是什么?的重复问题。 - toro2k
谢谢大家。我刚在 irb 中测试了它,显示了所有路径。 - Joe.wang
3个回答

11

变量$:是执行环境变量之一,它是一个用于搜索已加载文件的位置数组。

初始值是通过-I命令行选项传递的参数的值,后跟安装定义的标准库位置。

请参见预定义变量$LOAD_PATH是其别名。


3

这是负载路径。

只需在IRB终端中打开并键入以下内容$: 这就是您将得到的内容。当然这取决于您使用的Ruby版本。

2.1.1 :009 > $:
=> ["/Users/mac/.rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0", "/Users/mac/.rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0/x86_64-darwin12.0", "/Users/mac/.rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby", "/Users/mac/.rvm/rubies/ruby-2.1.1/lib/ruby/vendor_ruby/2.1.0", "/Users/mac/.rvm/rubies/ruby-2.1.1/lib/ruby/vendor_ruby/2.1.0/x86_64-darwin12.0", "/Users/mac/.rvm/rubies/ruby-2.1.1/lib/ruby/vendor_ruby", "/Users/mac/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0", "/Users/mac/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/x86_64-darwin12.0"] 
2.1.1 :010 > 

2
在Ruby中,$代表预定义变量。
在这种情况下,$:是$LOAD_PATH的简写。这是您可以从中使用相对路径来要求文件的目录列表。换句话说,Ruby搜索在$:中列出的目录。
希望这有所帮助。

2
不,$ 是一个全局变量,而不是预定义的变量。 - Jörg W Mittag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接