预定义变量
Ruby的预定义变量会影响整个程序的行为,因此不建议在库中使用它们。大多数预定义变量中的值可以通过其他方式访问。下表列出了所有Ruby的预定义变量。
预定义变量 |
说明 |
$! |
引发了最后一个exception对象。也可以在rescue子句中使用=>访问exception对象。 |
$@ |
最后引发的异常的堆栈回溯。可以通过最后一个异常的Exception#backtrace方法检索堆栈回溯信息。 |
$/ |
输入记录分隔符(默认为换行符)。 gets,readline等,将其输入记录分隔符作为可选参数。 |
$\ |
输出记录分隔符(默认为nil)。 |
$, |
在print和Array#join的参数之间的输出分隔符(默认为nil)。您可以为Array#join明确指定分隔符。 |
$; |
拆分的默认分隔符(默认为nil)。您可以为String#split显式指定分隔符。 |
$. |
从当前输入文件中读取的最后一行的编号。等效于ARGF.lineno。 |
$< |
ARGF的同义词。 |
$ |
$defout的同义词。 |
$0 |
当前正在执行的Ruby程序的名称。 |
$$ |
当前Ruby程序正在执行的进程pid。 |
$? |
最后一个进程的退出状态已终止。 |
$: |
$LOAD_PATH的同义词。 |
$DEBUG |
如果指定了-d或--debug命令行选项,则为true。 |
$defout |
print和printf的目标输出(默认为$ stdout)。 |
$F |
指定-a时从split接收输出的变量。如果同时指定了-a命令行选项和-p或-n选项,则将设置此变量。 |
$FILENAME |
当前从ARGF读取的文件名。等效于ARGF.filename。 |
$LOAD_PATH |
一个数组,其中包含使用load和require方法加载文件时要搜索的目录。 |
$SAFE |
安全等级
- 0 → 不检查外部提供的(污染的)数据。 (默认)
- 1 → 禁止使用受污染的数据进行潜在的危险操作。
- 2 → 禁止对进程和文件进行潜在的危险操作。
- 3 → 所有新创建的对象均被视为已污染。
- 4 → 禁止修改全局数据。
|
$stdin |
标准输入(默认为STDIN)。 |
$stdout |
标准输出(默认为STDOUT)。 |
$stderr |
标准错误(默认为STDERR)。 |
$VERBOSE |
如果指定了-v,-w或--verbose命令行选项,则为true。 |
$-x |
解释器选项-x的值(x = 0,a,d,F,i,K,l,p,v)。这些选项在下面列出 |
$-0 |
解释器选项-x的值和$ /的别名。 |
$-a |
解释程序选项-x的值,如果设置了选项-a则为true。只读。 |
$-d |
解释器选项-x的值和$ DEBUG的别名 |
$-F |
解释器选项-x的值和$;的别名。 |
$-i |
解释器选项-x的值和在就地编辑模式下保留扩展名,否则为nil。可以启用或禁用就地编辑模式。 |
$-I |
解释器选项-x的值和$:的别名。 |
$-l |
解释器选项-x的值,如果设置了选项-lis则为true。只读。 |
$-p |
解释程序选项-x的值,如果设置了选项-pis则为true。只读。 |
$_ |
局部变量,即get或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对象。 |
$+ |
对应于最后一个模式匹配中最后一个成功匹配的组的字符串。 |