Ruby 預定義變數



Ruby 的預定義變數會影響整個程式的行為,因此不建議在庫中使用它們。

大多數預定義變數的值可以透過其他方法訪問。

下表列出了所有 Ruby 的預定義變數。

序號 變數名及描述
1

$!

最後引發的異常物件。異常物件也可以在rescue語句中使用=>訪問。

2

$@

最後引發的異常的堆疊回溯。可以透過最後異常的Exception#backtrace方法檢索堆疊回溯資訊。

3

$/

輸入記錄分隔符(預設為換行符)。gets, readline, 等將它們的可選項作為輸入記錄分隔符。

4

$\

輸出記錄分隔符(預設為 nil)。

5

$,

print 和 Array#join 的引數之間的輸出分隔符(預設為 nil)。您可以為 Array#join 顯式指定分隔符。

6

$;

split 的預設分隔符(預設為 nil)。您可以為 String#split 顯式指定分隔符。

7

$.

從當前輸入檔案中讀取的最後一行號。等同於 ARGF.lineno。

8

$<

ARGF 的同義詞。

9

$>

$defout 的同義詞。

10

$0

當前正在執行的 Ruby 程式的名稱。

11

$$

當前正在執行的 Ruby 程式的程序 ID。

12

$?

最後終止的程序的退出狀態。

13

$:

$LOAD_PATH 的同義詞。

14

$DEBUG

如果指定了 -d 或 --debug 命令列選項,則為真。

15

$defout

printprintf 的目標輸出(預設為 $stdout)。

16

$F

當指定 -a 時接收來自 split 的輸出的變數。如果指定了 -a 命令列選項以及 -p 或 -n 選項,則會設定此變數。

17

$FILENAME

當前正在從 ARGF 讀取的檔名。等同於 ARGF.filename。

18

$LOAD_PATH

一個包含在使用 load 和 require 方法載入檔案時要搜尋的目錄的陣列。

19

$SAFE

安全級別

0 → 對外部提供的(被汙染的)資料不執行任何檢查。(預設)

1 → 禁止使用被汙染的資料進行潛在危險的操作。

2 → 禁止對程序和檔案的潛在危險操作。

3 → 所有新建立的物件都被認為是被汙染的。

4 → 禁止修改全域性資料。

20

$stdin

標準輸入(預設為 STDIN)。

21

$stdout

標準輸出(預設為 STDOUT)。

22

$stderr

標準錯誤(預設為 STDERR)。

23

$VERBOSE

如果指定了 -v、-w 或 --verbose 命令列選項,則為真。

24

$-x

直譯器選項 -x 的值 (x=0, a, d, F, i, K, l, p, v)。這些選項列在下面

25

$-0

直譯器選項 -x 的值以及 $/ 的別名。

26

$-a

直譯器選項 -x 的值,如果設定了 -a 選項則為真。只讀。

27

$-d

$DEBUG 的直譯器選項 -x 的值和別名

28

$-F

$; 的直譯器選項 -x 的值和別名。

29

$-i

直譯器選項 -x 的值,在就地編輯模式下,儲存副檔名,否則為 nil。可以啟用或停用就地編輯模式。

30

$-I

:的直譯器選項 -x 的值和別名。

31

$-l

直譯器選項 -x 的值,如果設定了 -l 選項則為真。只讀。

32

$-p

直譯器選項 -x 的值,如果設定了 -p 選項則為真。只讀。

33

$_

區域性變數,當前作用域中 gets 或 readline 讀取的最後一個字串。

34

$~

區域性變數,與最後匹配相關的 MatchData。Regex#match 方法返回最後匹配的資訊。

35

$n ($1, $2, $3...)

在最後模式匹配的第 n 個組中匹配的字串。等同於 m[n],其中 m 是一個 MatchData 物件。

36

$&

在最後模式匹配中匹配的字串。等同於 m[0],其中 m 是一個 MatchData 物件。

37

$`

在最後模式匹配中匹配之前的字串。等同於 m.pre_match,其中 m 是一個 MatchData 物件。

38

$'

在最後模式匹配中匹配之後的字串。等同於 m.post_match,其中 m 是一個 MatchData 物件。

39

$+

對應於最後模式匹配中最後成功匹配的組的字串。

廣告
© . All rights reserved.