跳转到内容

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 对象。


$+

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


华夏公益教科书