Ruby 程式設計/參考/預定義變數
外觀
Ruby 的預定義(內建)變數會影響整個程式的行為,因此不建議在庫中使用它們。
大多數預定義變數中的值可以透過其他方式訪問。
$!
- 最後引發的異常物件。異常物件也可以在 rescue 子句中使用 => 訪問。
$@
- 最後引發的異常的堆疊回溯。可以使用最後一個異常的 Exception#backtrace 方法檢索堆疊回溯資訊。
$/
- 輸入記錄分隔符(預設情況下為換行符)。gets、readline 等將輸入記錄分隔符作為可選引數。
$\
- 輸出記錄分隔符(預設情況下為 nil)。
$,
- print 和 Array#join 的引數之間的輸出分隔符(預設情況下為 nil)。您可以為 Array#join 顯式指定分隔符。
$;
- split 的預設分隔符(預設情況下為 nil)。您可以為 String#split 顯式指定分隔符。
$.
- 從當前輸入檔案中讀取的最後一行號。等效於 ARGF.lineno。
$<
- ARGF 的同義詞。
$>
- $defout 的同義詞。
$0
- 正在執行的當前 Ruby 程式的名稱。
$$
- 正在執行的當前 Ruby 程式的程序 ID。
$?
- 最後一個終止程序的退出狀態。
$:
- $LOAD_PATH 的同義詞。
$DEBUG
- 如果指定了 -d 或 --debug 命令列選項,則為真。
$defout
- print 和 printf 的目標輸出(預設情況下為 $stdout)。
$F
- 當指定 -a 時,接收來自 split 的輸出的變數。如果與 -p 或 -n 選項一起指定 -a 命令列選項,則會設定此變數。
$FILENAME
- 當前從 ARGF 讀取的檔案的名稱。等效於 ARGF.filename。
$LOAD_PATH
- 一個數組,其中包含使用 load 和 require 方法載入檔案時要搜尋的目錄。
$SAFE
- 安全級別。
0 No checks are performed on externally supplied (tainted) data. (default)
1 Potentially dangerous operations using tainted data are forbidden.
2 Potentially dangerous operations on processes and files are forbidden.
3 All newly created objects are considered tainted.
4 Modification of global data is forbidden.
$stdin
- 標準輸入(預設情況下為 STDIN)。
$stdout
- 標準輸出(預設情況下為 STDOUT)。
$stderr
- 標準錯誤(預設情況下為 STDERR)。
$VERBOSE
- 如果指定了 -v、-w 或 --verbose 命令列選項,則為真。
$- x
- 直譯器選項 -x 的值(x=0、a、d、F、i、K、l、p、v)。
以下是區域性變數
$_
- 在當前作用域中,gets 或 readline 讀取的最後一個字串。
$~
- 與最後匹配相關的 MatchData。Regex#match 方法返回最後匹配資訊。
以下變數儲存的值會根據 $~ 的當前值而改變,並且不能接收賦值
$ n ($1, $2, $3...)
- 在最後一次模式匹配的第 n 個組中匹配的字串。等效於 m[n],其中 m 是一個 MatchData 物件。
$&
- 在最後一次模式匹配中匹配的字串。等效於 m[0],其中 m 是一個 MatchData 物件。
$`
- 在最後一次模式匹配中匹配字串之前的字串。等效於 m.pre_match,其中 m 是一個 MatchData 物件。
$'
- 在最後一次模式匹配中匹配字串之後的字串。等效於 m.post_match,其中 m 是一個 MatchData 物件。
$+
- 對應於最後一次模式匹配中成功匹配的組的字串。