Ruby的预定义变量

一、异常

名称描述相当于
$!捕获的异常Exception
$@异常的backtraceException#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
$defoutprint与printf的输出变量,缺省为$stdio
$stdin当前标准输入 缺省 STDIN
$stdout当前标准输出 缺省 STDOUT
$stderr当前标准错误输出 缺省 STDERR

四、进程

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

五、其它

名称描述
$:$LOAD_PATH
$"已require的module,用于避免二次载入
$DEBUG是否为DEBUG状态, -d --debug开启则为真
$FILENAME$<.filename
$SAFE安全等级
$VERBOSEverbose选项是开启则为真
$-O$/
$-a-a选项开启则为真
$-d$DEBUG
$-F$;
$-I$:
$-l-lis选项开启则为真
$-p-pis选项开启则为真

发表评论

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

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>