簡體   English   中英

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

[英]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標識

$:是用於查找外部文件的全局變量。

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

$:按加載或要求加載腳本和二進制模塊的路徑。

引用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM