原文地址
Predefined Variables
?
翻译了一部分。
下列内容讨论的是Ruby解析器中预定义的变量,在这些讨论中有一些标示需要预先做一下说明。
- [r/o]表示这个变量是只读的,如果说程序代码中试图修改这些只读变量则解析器会抛出错误。
- [thread]表示这个变量是一个线程内的变量。
由于历史原因,Ruby中的很多全局变量沿袭自脚本语言Perl。这些全局变量看起来像动画片任务Snoopy的口头禅,例如 $_ , $! , $& 等等。Ruby语言的设计者为了方便使用者记忆和使用这些变量,也为这些变量定义了很多全英文标示的有描述意义的变量(见下表)。
- $*?????? $ARGV?????????????????? ???
- $?? ??? $CHILD_STATUS ??? ????????
- $<? ??? $DEFAULT_INPUT ??? ????????
- $>? ??? $DEFAULT_OUTPUT???????? ???
- $!? ???? $ERROR_INFO???????????? ???
- $@? ? $ERROR_POSITION???????? ???
- $;? ???? $FIELD_SEPARATOR????????
- $;? ???? $FS???????????????????? ???
- $=? ??? $IGNORECASE ??? ??????????
- $.? ???? $INPUT_LINE_NUMBER ??? ????
- $.?????? $NR
- $/? ???? $INPUT_RECORD_SEPARATOR ???
- $/?????? $RS????????????????????
- $~? ??? $LAST_MATCH_INFO ??? ??????
- $+? ??? $LAST_PAREN_MATCH ??? ????????
- $_? ??? $LAST_READ_LINE ??? ???
- $"?????? $LOADED_FEATURES
- $&????? $MATCH
- $,?????? $OFS
- $\?????? $ORS
- $\?????? $OUTPUT_RECORD_SEPARATOR
- $,?????? $OUTPUT_FIELD_SEPARATOR
- $$????? $PID
- $'?????? $POSTMATCH
- $`????? $PREMATCH
- $$???? $PROCESS_ID
- $0???? $PROGRAM_NAME
在下面的描述中,Shell变量的描述列表 数据组织顺序为 变量名称 指向的数据类型 具体描述
?
- $!????? Exception??? 最近一次抛出(上一次传递到raise)的异常对象? [thread]
- $@?? Array ? ? ? ? ?? 最后一次抛出异常的异常堆栈表.详情参见Kernel#caller [thread]
当正则表达式运算匹配不成功时,以下变量除了$=都被赋值为nil
以下都是指:最后一个本作用域内的被成功模式匹配
- $= ??? Object ??? 只要不为nil/false,则后面的模式匹配(正则表达式、Hash、字符串比较)都忽略大小写
- $1 to $9 ??? String ??? The contents of successive groups matched in the last successful pattern match. In "cat" =~/(c|a)(t|z)/, $1 will be set to “a” and $2 to “t”. This variable is local to the current scope. [r/o, thread]
- $~ ??? MatchData ??? An object that encapsulates the results of a successful pattern match. The variables $&, $`, $', and $1 to $9 are all derived from $~. Assigning to $~ changes the values of these derived variables. This variable is local to the current scope. [thread]
?
?
?