Ruby中的“$”字符是什么意思?
一直在玩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' 有人能告诉我什么$:(又名“金光闪闪”)引用?
$:是用于查找外部文件的全局variables。
从http://www.zenspider.com/Languages/Ruby/QuickRef.html#18
$:通过加载或要求加载脚本和二进制模块的path。
  $标识一个全局variables,而不是局部variables@instancevariables或@@类variables。 
 在语言提供的全局variables中有$LOAD_PATH它也由$LOAD_PATH标识 
引用Ruby论坛:
ruby带有一组预定义的variables
 $: = default search path (array of paths) __FILE__ = current sourcefile 
如果我得到它的权利(不是100%肯定),这通过检索当前文件添加到这个searchpath数组的libpath。 这不是最好的方法,我只是从RAILS_ROOT开始(至less对于rails项目)
 $:.unshift 
是相同的
 $LOAD_PATH.unshift 
。 你也可以说:
 $: << $LOAD_PATH << 
他们是很常见的Ruby成语来设置加载path。
我想注意Ruby的一些奇怪的事情!
  $确实意味着加载path。 而且; 意味着“终点线”。 但! 
 $; 指字段分隔符。 尝试在你的REPL中运行$;.to_s ,你会看到它返回"," 。 那不是全部!  $与其他后缀可能意味着许多其他的事情 。 
为什么? 那么,Perl当然!