-

Ruby的预定义变量会影响整个程序的行为,因此不推荐在库中使用它们。

大多数预定义变量中的值可以通过替代方法访问。

下表列出了所有Ruby的预定义变量。

没有 变量名称和描述
1 $!

提出的最后一个异常对象。也可以在rescue子句中使用=>来访问异常对象

2 $ @

堆栈回溯募集的最后一个异常。堆栈回溯信息可以通过Exception#backtrace方法检索最后一个异常。

3 $ /

输入记录分隔符(默认为换行符)。获取,readline等,将他们的输入记录分隔符作为可选参数。

4 $

输出记录分隔符(默认为nil)。

5 $,

要打印的参数和Array#join之间的输出分隔符(默认为nil)。您可以将数组明确指定给Array#join。

6 $;

split的默认分隔符(默认为nil)。您可以为String#split指定明确的分隔符。

7 $。

从当前输入文件读取的最后一行的编号。相当于ARGF.lineno。

8 $ <

ARGF的同义词

9 $>

$ defout的同义词。

10 $ 0

正在执行的当前Ruby程序的名称。

11 $$

正在执行的当前Ruby程序的进程pid。

12 $?

最后一个进程的退出状态终止。

13 $:

$ LOAD_PATH的同义词。

14 $ DEBUG

如果指定了-d或--debug命令行选项,则为true。

15 $ defout

printprintf的目标输出默认为$ stdout)。

16 $ F

指定-a时接收分割输出的变量如果指定-a命令行选项以及-p或-n选项,则设置此变量。

17 $ FILENAME

目前正在从ARGF读取的文件的名称。相当于ARGF.filename。

18 $ LOAD_PATH

一个数组,用于加载和要求方法加载文件时要保存要搜索的目录。

19 $ SAFE

安全级别

0→不对外部提供(污染)数据执行检查。(默认)

1→禁止使用污染数据的潜在危险操作。

2→禁止对进程和文件进行潜在危险的操作。

3→所有新创建的对象都被认为是污染的。

4→禁止修改全局数据。

20 $ stdin

标准输入(默认为STDIN)。

21 $ stdout

标准输出(默认为STDOUT)。

22 $ stderr

标准错误(默认为STDERR)。

23 $ VERBOSE

如果指定了-v,-w或--verbose命令行选项,则为True。

24 $ - x

解释器选项-x(x = 0,a,d,F,i,K,l,p,v)的值。这些选项列在下面

25 $ -0

解释器选项-x的值和$ /的别名。

26 $ -a

解释器选项-x的值,如果选项-a被设置,则为true。只读。

27 $ -d

解释器选项-x的值和$ DEBUG的别名

28 $ -F

解释器选项-x和别名$ ;.

29 $ -i

解释器选项-x和in-place-edit模式的值保存扩展名,否则为nil。可以启用或禁用就地编辑模式。

30 $ -I

解释器选项-x的值和$:的别名。

31 $ -l

解释器选项-x的值,如果选项-lis设置为true。只读。

32 $ -p

解释器选项-x的值,如果选项-pis设置为true。只读。

33 $ _

局部变量,最后一个字符string通过gets或readline在当前作用域中读取。

34 $

与最后一场比赛相关的局部变量MatchDataRegex#match方法返回最后一个匹配信息。

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

在最后一个模式匹配的第n组中匹配的字符string。相当于m [n],其中m是MatchData对象。

36 $&

在最后一个模式匹配中匹配的字符string。相当于m [0],其中m是MatchData对象。

37 $`

在最后一个模式匹配的匹配之前的字符string。相当于m.pre_match,其中m是MatchData对象。

38 $"

匹配后的字符string在最后一个模式匹配。相当于m.post_match,其中m是MatchData对象。

39 $ +

与最后一个模式匹配的最后一个成功匹配的组对应的字符string。