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 对象。
$+
- 对应于最后一次模式匹配中成功匹配的组的字符串。