Ruby中“$”字符的含义是什么?
问题描述:
一直在玩Ruby on Rails,并决定看看实际的源代码。从GitHub抓回购,并开始环顾四周。遇到一些代码,我不确定它做了什么或它引用了什么。
我看到的ActionMailer /测试这种代码/ 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'
有人能告诉我是什么$(又名 “金光闪闪”)被引用?
答
答
红宝石附带了一组预定义变量
$: = default search path (array of paths)
__FILE__ = current sourcefile
的,如果我得到它的权利(不是100%肯定),这增加的lib路径,这个阵列 通过查看当前文件搜索路径。这是不完全的 最好的方法,我会简单地用RAILS_ROOT开始(至少在轨 项目)
答
$:.unshift
相同
$LOAD_PATH.unshift
。你也可以这样说:
$: <<
$LOAD_PATH <<
他们是很常见的Ruby成语来设置加载路径。
答
$
标识一个全局变量,与局部变量@instance变量或@@ class变量相反。
在这些语言提供的全局变量$:
,这也是由$LOAD_PATH
答
我想指出一点古怪关于Ruby鉴定!
$
确实意味着加载路径。而;
的意思是“终点线”。但!
$;
表示字段分隔符。尝试在您的REPL中运行$;.to_s
,您会看到它返回","
。那不是全部! $
with other suffixes can mean many other things。
谢谢,这就是我正在寻找的,即使用$定义字段分隔符之间的许多其他事情。 – user1175135 2018-02-10 15:52:31