Ruby中的"$"字符是什么意思?

Sco*_*iff 58 ruby ruby-on-rails

一直在使用Ruby on Rails并决定查看实际来源.抓住GitHub的回购并开始环顾四周.遇到一些代码,我不知道它做了什么或它引用了什么.

我在actionmailer/test/abstract_unit.rb中看到了这段代码

root = File.expand_path('../../..', __FILE__)
 begin
 require "#{root}/vendor/gems/environment"
 rescue LoadError
 $:.unshift("#{root}/activesupport/lib")
 $:.unshift("#{root}/actionpack/lib")
end

lib = File.expand_path("#{File.dirname(__FILE__)}/../lib")
$:.unshift(lib) unless $:.include?('lib') || $:.include?(lib)

require 'rubygems'
require 'test/unit'

require 'action_mailer'
require 'action_mailer/test_case'
Run Code Online (Sandbox Code Playgroud)

有人能告诉我$ :(又名"bling")引用了什么?

Jus*_*ove 65

$ 标识全局变量,而不是局部变量,@ instance变量或@@类变量.

在语言提供的全局变量中$:,也是由...标识的$LOAD_PATH


Mar*_*ers 35

$:是用于查找外部文件的全局变量.

来自http://www.zenspider.com/Languages/Ruby/QuickRef.html#18

$:按加载或要求加载脚本和二进制模块的路径.


Ale*_*emi 5

我想指出一些关于Ruby的怪异现象!

$确实意味着负载路径。并;表示“终点线”。但!

$;表示字段分隔符。尝试$;.to_s在REPL中运行,您会看到它返回","。那不是全部!$加上其他后缀可能意味着许多其他事情

为什么?好吧,Perl当然!