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