免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1050 | 回复: 0
打印 上一主题 下一主题

Ruby on My Way -- Java程序员的Ruby学习笔记(Ruby变量二) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-18 10:36 |只看该作者 |倒序浏览

                               
Ruby为我们提供了一些全局变量,我们在程序中可以随时调用,熟悉这些变量可以在我们编写程序时为我们提供很多的便利。

  
  全局变量名称
  
  
  说明
  


  
  $@
  
  
  The location of the latest error. (最近一次出错的位置,不知道这里的出错指的什么?Exception?还是error?)
  


  
  $_(特殊)
  
  
  The string last read by gets. (gets从用户输入所获取的最后一个字符串)
  


  
  $.
  
  
  The line number last read by interpreter.
  (Ruby解析器所解析代码的最后一行的行号)
  


  
  $&
  
  
  The string last matched by regexp.
  


  
  $~(特殊)
  
  
  The last regexp match, as an array of
  subexpressions.
  


  
  $n
  
  
  The nth subexpression in the
  last match (same as $~[n]).
  


  
  $=
  
  
  The case-insensitivity flag.
  


  
  $/
  
  
  The input record separator.
  


  
  $\
  
  
  The output record separator.
  


  
  $O(不是零)
  
  
  The name of the ruby script file
  currently executing. (可以获取当前被执行的Ruby文件的名称)
  


  
  $*
  
  
  The command line arguments used to invoke
  the script.
  


  
  $$
  
  
  The Ruby interpreter's process ID.
  


  
  $?
  
  
  The exit status of last executed child process.
  

  上表中的$_和$~有些特殊,他们实际上并不是“全局”变量,或者说对他们的引用是全局的,但是他们的值并不是全局的(在哪里都可以引用这两个变量,但是他们的值并不是全局相同的)。

这两个变量的值都是局部可见,也就是说,在一个代码块(方法、循环等等)中,这两个变量的值不受块外代码的影响,块外代码改变他们的值,在块内不会受影响。同样的,在块内改变他们的值也不会影响到块外的代码。写一段代码可以试一试,如下:
               
               
                class Greeting
       def say_hello_to(name)
              puts “Hello #{name}!!
       end
       def who_is_here
              puts $_
              gets
       end
end
gets #输入sparksA
greeter = Greeting.new
greeter.say_hello($_) #输出”sparksA”
greeter.who_is_here #输出的是“nil”,然后我们输入sparksB
puts $_ #输出“sparksA”,没有受到who_is_here方法中gets的影响
  除了上面两个特殊的“全局“变量外,再说说几个正则表达式相关的变量。$&是最后一个与正则表达式匹配成功的字符串。$~保存的是经正则表达式匹配后分隔成的字符串数组。要注意的是,如果正则表达式未匹配到任何字符串,那么$~保存的是一个空的数组,这点与Java中调用String类和Pattern类中的split方法不一样,这两个方法在未找到匹配的情况下会返回一个只包含源字符串的数组。$n中的n指的是正则表达式中的第n组表达式,这个变量中保存的就是第n组表达式所匹配到的字符串,类似于Java中Matcher类的group(int group)方法。
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1449/showart_498767.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP