Ruby的预定义变量

一、异常

名称 描述 相当于
$! 捕获的异常 Exception
$@ 异常的backtrace Exception#backtrace

例:

begin
	raise "err msg"
rescue
	p $! # #<RuntimeError: err msg>
	p $@ #["(irb):2:in `irb_binding'", "/usr/local/lib/ruby/1.8/irb/workspace.rb:52:in `irb_binding'", ":0"]
end

二、正则

对于 m=str.match(pattern)

变量 性质 描述 相当于
$& 只读,本地 匹配的项 m[0]
$` 只读,本地 匹配的字符串之前未匹配的部分 m.pre_match
$’ 只读,本地 匹配的字符串之后未匹配的部分 m.post_match
$+ 只读,本地 最后一个匹配的项 m[m.size-1]
$1,$2 只读,本地 所指定的匹配的项 m[n]
$~ 本地 匹配的结果 m

例:

"start-111-222-333-444-end" =~ /(\d+)-(\d+)-(\d+)-(\d+)/
p $& #"111-222-333-444"
p $` # "start-"
p $' # "-end"
p $+ # "444"
p $1 # "111"
p $2 # "222"
p $~[3] # "333"

三、IO/String

名称 描述 默认
$_ gets,readline最后读入的行
$F $_.split 仅当选项-a为真时
$/ 用于gets,readline等分割符 “\n”
$\ print与IO.write的分割符 nil
$, Array#join的分割符 nil
$; String#split的分割符 nil
$. ARGF.lineno
$< ARGF
$* ARGV
$> $defout
$defout print与printf的输出变量,缺省为$stdio
$stdin 当前标准输入 缺省 STDIN
$stdout 当前标准输出 缺省 STDOUT
$stderr 当前标准错误输出 缺省 STDERR

四、进程

名称 描述
$0 当前ruby程序名
$$ Process.pid
$? 最后执行的外部程序的返回状态

五、其它

名称 描述
$: $LOAD_PATH
$” 已require的module,用于避免二次载入
$DEBUG 是否为DEBUG状态, -d –debug开启则为真
$FILENAME $<.filename
$SAFE 安全等级
$VERBOSE verbose选项是开启则为真
$-O $/
$-a -a选项开启则为真
$-d $DEBUG
$-F $;
$-I $:
$-l -lis选项开启则为真
$-p -pis选项开启则为真
共1条评论
  1. xxx @ 2014-07-16 10:32:17 回复

    关于这一部分,还是学学得好.不错.谢谢

发表评论

电子邮件地址不会被公开。 必填项已用*标注