Ruby - 预定义变量

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

可以通过其他方式访问大多数预定义变量中的值。

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

序号 变量的名称 & 描述
1

$!

引发的最后一个异常对象。 也可以使用 rescue 子句中的 => 访问异常对象。

2

$@

引发的最后一个异常的堆栈 backtrace。 堆栈backtrace信息可以通过最后一个异常的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 程序的进程 pid。

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,则为 true。 只读。

27

$-d

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

28

$-F

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

29

$-i

解释器选项 -x 的值在就地编辑模式下,保留扩展名,否则为零。 可以启用或禁用就地编辑模式。

30

$-I

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

31

$-l

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

32

$-p

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

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

$+

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