[英]What does the “$” character mean in 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'
有人能告訴我$ :(又名“bling”)引用了什么?
$
標識全局變量,而不是局部變量,@ instance變量或@@類變量。
語言提供的全局變量中有$:
,它也由$LOAD_PATH
標識
引用Ruby論壇:
ruby帶有一組預定義變量
$: = default search path (array of paths)
__FILE__ = current sourcefile
如果我做對了(不是100%肯定),這將通過遍歷當前文件將lib路徑添加到此搜索路徑數組。 這不是最好的方式,我只想從RAILS_ROOT開始(至少對於一個rails項目)
我想注意一些關於Ruby的奇怪之處!
$
確實意味着加載路徑。 而且;
意思是“終點線”。 但!
$;
表示字段分隔符。 嘗試在REPL中運行$;.to_s
,你會看到它返回","
。 那不是全部! $
與其他后綴可能意味着許多其他事情 。
為什么? 好吧,Perl當然!
$:.unshift
是相同的
$LOAD_PATH.unshift
。 你也可以說:
$: <<
$LOAD_PATH <<
它們是設置加載路徑的常用Ruby習語。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.