Did you know that you can navigate the posts by swiping left and right?
Ruby中很多的语法风格都受到Perl语言影响,其中就包括”$”开头的全局变量。常见的有以下这些:
| $ | ||
|---|---|---|
| 符号 | 意义 | 别名(require ‘English’) |
| $! | 传给raise的异常信息 | $ERROR_INFO |
| $@ | 异常引起的错误堆栈 | $ERROR_POSITION |
| $& | 基于$~,正则匹配到的字段的的全部内容 | $MATCH |
| $` | 基于$~,正则匹配到的字段的左边内容 | $PREMATCH |
| $’ | 基于$~,正则匹配到的字段的右边内容 | $POSTMATCH |
| $+ | 基于$~,正则匹配到的字段的最后一段内容 | $LAST_PAREN_MATCH |
| $n | 正则匹配到的第n组 | |
| $~ | 正则匹配到的数据。仅限于当前进程的当前方法 | $LAST_MATCH_INFO |
| $= | 大小写敏感标志位,弃用。 | $IGNORECASE |
| $/ | 输入分隔符,默认为换行符 | $RS 或者 $INPUT_RECORD_SEPARATOR |
| $\ | 输出分隔符,默认为nil | $ORS 或者 $OUTPUT_RECORD_SEPARATOR |
| $, | print和Array#join的输出分隔符,默认为nil | $OFS 或者 $OUTPUT_FIELD_SEPARATOR |
| $; | String#split的默认分隔符 | $FS 或者 $FIELD_SEPARATOR |
| $. | The current line number of the last file from input. | $NR 或者 $INPUT_LINE_NUMBER |
| $< | 同 ARGF. | $DEFAULT_INPUT |
| $> | print, printf的默认输出 | $DEFAULT_OUTPUT |
| $_ | 读取到的输入行,默认为nil。 | $LAST_READ_LINE |
| $0 | 被执行的脚本的名字。 | |
| $* | 输入参数 | $ARGV |
| $$ | 当前Ruby进程ID | $PID 或者 $PROCESS_ID |
| $? | 子进程的exit code。只读参数。 | $CHILD_STATUS |
| $: | 用require加载的库的目录 | $LOAD_PATH. |
| $” | 用require导入的库和模块 |
用“=~”方法匹配字符串的时候,会创建特殊的全局变量,$1,$2…但其作用域只在当前进程的当前方法。
用“$:”方法表示用require加载的库的目录。
用“$_”方法,表示输入读取标准输入中的一行,就像readline方法
为了书写和使用的方便,这些方法主要使用在脚本中。但在平时编写的代码中,使用以上这些全局变量,却会使得代码的可读性下降。所以一般不推荐使用。其替代方法,即为第三列中的别名。使用别名时,需要引入English库。这样就会使得代码的可读性相对提高。
引用:部分翻译自:http://www.zenspider.com/Languages/Ruby/QuickRef.html#pre-defined-variables