简要分析Ruby局部域变量
创始人
2024-06-15 18:11:38
0

Ruby作为一个灵活性较强的语言,内置了许多内部变量,不同的变量可以实现不同的功能,熟练的掌握这些变量的运用,可以方便我们编程。 #t#

Ruby局部域变量就是其中之一。

在某一个线程作用域内才能有效,下列也可看做是线程内的局部变量.
PS:这边讲解的几个变量都是于正则匹配相关的,正则匹配过程的代码是一样的,这里不重复输入正则表达式匹配的代码,只在***个例子里给出完整的输入和输出,之后的例子只直接输出变量的值

Ruby局部域变量之$_

gets或readline***读入的字符串.若遇到EOF则为nil.该变量的作用域是局部域. 

  1. irb(main):006:0> $_   
  2. => nil   
  3. irb(main):007:0> gets   
  4. foobar   
  5. => "foobar\n"   
  6. irb(main):008:0> $_   
  7. => "foobar\n"   

 

Ruby局部域变量之$&

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

  1. irb(main):002:0> $&   
  2. => nil   
  3. irb(main):010:0> /(foo)(bar)(BAZ)?/
     =~ "foobarbaz"   
  4. => 0   
  5. irb(main):011:0> $&   
  6. => "foobar"   

 

Ruby局部域变量之$~

在当前作用域中,***一次匹配成功的相关信息(MatchData对象-为处理与正则表达式的匹配过程相关的信息而设置的类.).
可以使用$~[n]的形式从该数据中抽取第n个匹配结果($n).相当于是$1,$2...
等同于Regexp.last_match. 

  1. irb(main):012:0> $~   
  2. => #"foo" 2:"bar" 3:nil>   
  3. irb(main):026:0> $1   
  4. => "foo"   
  5. irb(main):027:0> $~[1]   
  6. => "foo"   

 

Ruby局部域变量之$`

在当前作用域中,正则表达式***一次匹配成功的字符串前面的字符串.若***的匹配失败则为nil.
等同于Regexp.last_match.pre_match.

  1. irb(main):016:0> $`  
  2. => "" #由于***匹配成功的内容是
    foobar,输入的字符串前面没有别
    的字符所以是"" 

Ruby局部域变量之$'

在当前作用域中,正则表达式***一次匹配成功的字符串后面的字符串.若***的匹配失败则为nil.
等同于Regexp.last_match.post_match. 

  1. irb(main):028:0> $'   
  2. => "baz" 

Ruby局部域变量之$+

在当前作用域中,正则表达式***一次匹配成功的字符串部分中,与***一个括号相对应的那部分字符串.若***的匹配失败则为nil.在多项选择型匹配模型中,若您无法断定是哪个部分匹配成功时,该变量将会非常有用.

  1. irb(main):029:0> $+   
  2. => "bar" 

 

Ruby局部域变量之$1
$2
$3 ...

分别存储着***一次模型匹配成功时与第n个括号相匹配的值.若没有相应的括号时,其值为nil.等同于Regexp.last_match[1], Regexp.last_match[2],... 
 

  1. irb(main):030:0> $1   
  2. => "foo"   
  3. irb(main):031:0> $2   
  4. => "bar"   
  5. irb(main):032:0> $3   
  6. => nil  

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...