Ruby 预定义变量

  • 预定义变量

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