Ruby语言入门(9)- 内部变量

上一篇 / 下一篇  2013-02-01 14:35:25 / 个人分类:语言

全局变量
所有以`$'开头的变量

内部变量
全局变量中的内部变量(本网页介绍的变量)

特殊变量
内部变量中,形如"`$' + 1位数字或符号"的变量

选项变量
内部变量中,由命令行选项设定的变量,形如"`$-' +1个选项字符"


根据变量值的作用域的不同,大致将内部变量划分如下:
  • 局部域, 可看做是线程内的局部变量.
  • 线程局部域,在一个线程内部时是全局域变量,但在不同的线程之间是彼此独立的.
  • 全局域
属于局部域的:
$_ 

gets或readline最后读入的字符串.若遇到EOF则为nil.

$& (等同于Regexp.last_match[0])

在当前作用域中,正则表达式最后一次匹配成功的字符串.若最后一次匹配失败,则为nil.

$~ (等同于Regexp.last_match)

在当前作用域中,最后一次匹配成功的相关信息(MatchData对象).若对其进行设定的话, 则$&以及$1 ... $9等的值也会发生变化.可以使用$~[n]的形式从该数据中抽取第n个匹配结果($n)

$‘ (等同于Regexp.last_match.pre_match)

在当前作用域中,正则表达式最后一次匹配成功的字符串前面的字符串.若最后的匹配失败则为nil。

$· (等同于Regexp.last_match.post_match)

在当前作用域中,正则表达式最后一次匹配成功的字符串后面的字符串.若最后的匹配失败则为nil。

$+

在当前作用域中,正则表达式最后一次匹配成功的字符串部分中,与最后一个括号相对应的那部分字符串.若最后的匹配失败则为nil.

$1($2,$3,...)  (等同于Regexp.last_match[1], Regexp.last_match[2],...)

分别存储着最后一次模型匹配成功时与第n个括号相匹配的值.若没有相应的括号时,其值为nil.

属于线程局部域的:

$?

本线程中最后结束的子进程的状态值。

$!

最近发生的异常的信息

$@

以数组形式保存着发生异常时的back trace信息. 数组元素是字符串,它显示了方法调用的位置,其形式为:"filename:line"

$SAFE

当前线程的安全等级。

属于全局域的:

$/

输入记录分隔符。默认值为"\n"。若将该变量设为 nil 时,将一次读入整个文件。若设为空字符串 "" 则将是段落模式,此时会把2个以上的连续的换行符当作记录切分符。

$\

输出记录分隔符。print会在最后输出该字符串。默认值为nil,此时不会输出任何字符。

$,

默认的切分字符。若Array#join中省略了参数时或在print的各个参数间将会输出它,默认值为 nil ,等同于空字符串。

$;

当String#split中省略参数时的切分字符。默认值为nil,此时将进行特殊的分割。

$.

最后读入的输入文件的行号。

$<

由参数(若没的话就使用标准输入)构成的虚拟文件。也就是常数ARGF的别名。

$>

内部函数print、puts或p等的默认输出对象。初始值为STDOUT。若指定了-i[extension]选项的话,则将使用与读取源同名的文件。

$0/$PROGRAM_NAME 

当前运行中的Ruby脚本名.

$*

传递给Ruby脚本的参数.内部常数ARGV的别名.

$$

当前运行中的Ruby进程的pid

$:/$LOAD_PATH

包含一个数组,其内容是load或require加载文件时用的搜索目录列表.

$"/$LOADED_FEATURES 

包含以require加载的文件名的数组.这可以防止require多次加载同一个文件.

$DEBUG

若此值为真则变成调试模式。它由-d选项进行设定。

$FILENAME

虚拟文件ARGF中,当前正在读入的(gets方法正在读的)文件名

$stdin/$stdout/$stderr 

标准输入,标准输出,标准错误输出

$VERBOSE

警告等级分为三级,分别如下。
  • nil: 不输出警告
  • false: 只输出重要警告(默认)
  • true: 输出所有警告

$KCODE

Ruby可识别的多字节字符串的编码。变量值为"EUC" "SJIS" "UTF8" "NONE"之一。可以使用Ke,Ks,Ku,Kn。 "e" "E" 代表 "EUC","s" "S" 代表 "SJIS","u" "U" 代表 "UTF8",而"n" "N" 则代表 "NONE"。默认值为"NONE"。 


选项变量

用来显示Ruby解释器命令行信息的变量。其形式为$-?,?的部分是1位选项字符。

$-0
$/ 的别名。

$-a
若指定了-a时,其值为真。只读变量。

$-d
$DEBUG 的别名。

$-F
$; 的别名。

$-i
若指定了-i[extension]时,它将保存扩展名字符串。否则其值为nil。也可以在脚本中对其进行赋值,此时将在开始读入ARGV中的下一个文件之前进行in-place替换。

$-I
$LOAD_PATH 的别名。

$-K
$KCODE 的别名。

$-l
若指定了-l时,其值为真。只读变量。

$-p
若指定了-p时,其值为真。只读变量。

$-v 
若指定了-p时,其值为假。只读变量。

$-w
$VERBOSE 的别名。

$-W

返回由-W[level]指定的值。也就是说,根据$VERBOSE的取值不同
  • nil: 不输出警告 -> 0
  • false: 只输出重要警告(默认) -> 1
  • true: 输出所有警告 -> 2

TAG:

 

评分:0

我来说两句

日历

« 2024-02-25  
    123
45678910
11121314151617
18192021222324
2526272829  

数据统计

  • 访问量: 147387
  • 日志数: 185
  • 文件数: 6
  • 建立时间: 2007-08-06
  • 更新时间: 2015-01-06

RSS订阅

Open Toolbar