2011-10-03 39 views
2

我想知道更多關於$:的知識,但我不知道如何調用。

:015 > $: 
=> ["/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1", 
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/x86_64-darwin11.1.0", 
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby", 
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/vendor_ruby/1.9.1", 
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin11.1.0", 
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/vendor_ruby", 
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/1.9.1", 
"/Users/Nerian/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/1.9.1/x86_64-darwin11.1.0"] 
  • 這樣做有什麼名字?
  • 如何以及何時使用?
  • 是否應該使用它,這是一種好的做法還是不好的做法?
  • 是否支持所有Ruby實現?
  • 有關它的任何文檔?

回答

3
  • $:全球的規範(英文)名稱爲$LOAD_PATH
  • 正如其名說,它是庫搜索路徑的陣列,即,表示所有文件夾的字符串的數組,其中解釋器將搜索庫(當它遇到一個require "mylibrary"指令)
  • 它可與使用在處理全局變量時必須小心謹慎。實際上,在編寫包含在寶石或庫中的測試或演示腳本時,經常會使用它,以便測試修改加載路徑,以便在安裝之前查找待測試庫(例如,$: << "../lib",假設腳本位於同級lib
  • 它被所有規範的Ruby版本/實現使用。請注意,當前目錄.是1.8.x上的$:的一部分,並且出於安全原因已在1.9.x上刪除。
  • Docs在每個Ruby引擎上都可用(picaxe book,ruby docs站點)。
2

這相當於$LOAD_PATH。所以我想你可以稱之爲「加載路徑」。谷歌ruby load_path,你應該找到很多有用的信息。

Personnaly我更喜歡讀$LOAD_PATH,但$:是語言的一部分,所以我想可以使用它。

+0

'你的意思是:谷歌' –

+0

當然大聲笑。我修好了它。 – mb14

5

紅寶石有一些預先定義的變量

Pre-defined variables 
$!   The exception information message set by 'raise'. 
[email protected]   Array of backtrace of the last exception thrown. 
$&   The string matched by the last successful match. 
$`   The string to the left of the last successful match. 
$'   The string to the right of the last successful match. 
$+   The highest group matched by the last successful match. 
$1   The Nth group of the last successful match. May be > 1. 
$~   The information about the last match in the current scope. 
$=   The flag for case insensitive, nil by default. 
$/   The input record separator, newline by default. 
$\   The output record separator for the print and IO#write. Default is nil. 
$,   The output field separator for the print and Array#join. 
$;   The default separator for String#split. 
$.   The current input line number of the last file that was read. 
$<   The virtual concatenation file of the files given on command line (or from $stdin if no files were given). 
$>   The default output for print, printf. $stdout by default. 
$_   The last input line of string by gets or readline. 
$0   Contains the name of the script being executed. May be assignable. 
$*   Command line arguments given for the script sans args. 
$$   The process number of the Ruby running this script. 
$?   The status of the last executed child process. 
$:   Load path for scripts and binary modules by load or require. 
$"   The array contains the module names loaded by require. 
$DEBUG  The status of the -d switch. 
$FILENAME Current input file from $<. Same as $<.filename. 
$LOAD_PATH The alias to the $:. 
$stderr The current standard error output. 
$stdin  The current standard input. 
$stdout The current standard output. 
$VERBOSE The verbose flag, which is set by the -v switch. 
$-0  The alias to $/. 
$-a  True if option -a is set. Read-only variable. 
$-d  The alias to $DEBUG. 
$-F  The alias to $;. 
$-i  In in-place-edit mode, this variable holds the extension, otherwise nil. 
$-I  The alias to $:. 
$-l  True if option -l is set. Read-only variable. 
$-p  True if option -p is set. Read-only variable. 
$-v  The alias to $VERBOSE. 
$-w  True if option -w is set. 

http://www.zenspider.com/Languages/Ruby/QuickRef.html