Ruby中的预定义变量

原文地址
Predefined Variables

 

翻译了一部分。


下列内容讨论的是Ruby解析器中预定义的变量,在这些讨论中有一些标示需要预先做一下说明。

  • [r/o]表示这个变量是只读的,如果说程序代码中试图修改这些只读变量则解析器会抛出错误。
  • [thread]表示这个变量是一个线程内的变量。

由于历史原因,Ruby中的很多全局变量沿袭自脚本语言Perl。这些全局变量看起来像动画片任务Snoopy的口头禅,例如 $_ , $! , $& 等等。Ruby语言的设计者为了方便使用者记忆和使用这些变量,也为这些变量定义了很多全英文标示的有描述意义的变量(见下表)。

  • $*       $ARGV                      
  • $?      $CHILD_STATUS             
  • $<      $DEFAULT_INPUT             
  • $>      $DEFAULT_OUTPUT            
  • $!       $ERROR_INFO                
  • $@    $ERROR_POSITION            
  • $;       $FIELD_SEPARATOR        
  • $;       $FS                        
  • $=      $IGNORECASE               
  • $.       $INPUT_LINE_NUMBER         
  • $.       $NR
  • $/       $INPUT_RECORD_SEPARATOR    
  • $/       $RS                    
  • $~      $LAST_MATCH_INFO           
  • $+      $LAST_PAREN_MATCH             
  • $_      $LAST_READ_LINE        
  • $"       $LOADED_FEATURES
  • $&      $MATCH
  • $,       $OFS
  • $\       $ORS
  • $\       $OUTPUT_RECORD_SEPARATOR
  • $,       $OUTPUT_FIELD_SEPARATOR
  • $$      $PID
  • $'       $POSTMATCH
  • $`      $PREMATCH
  • $$     $PROCESS_ID
  • $0     $PROGRAM_NAME

在下面的描述中,Shell变量的描述列表 数据组织顺序为 变量名称 指向的数据类型 具体描述

 

异常信息

  • $!      Exception    最近一次抛出(上一次传递到raise)的异常对象  [thread]
  • $@   Array            最后一次抛出异常的异常堆栈表.详情参见Kernel#caller [thread]

模式匹配变量

当正则表达式运算匹配不成功时,以下变量除了$=都被赋值为nil

以下都是指:最后一个本作用域内的被成功模式匹配

  • $&     String     的字符串[r/o, thread]
  • $+     String     的最后一个部分(最后一个括号的内容)[r/o, thread]
  • $`     String     的最前面一个部分[r/o, thread]
  • $'     String     结束后的字符串[r/o, thread]
    irb(main):001:0> "cat"=~/(c|a)(t|z)/
    => 1
    irb(main):002:0> $+
    => "t"
    irb(main):003:0> $`
    => "c"
    irb(main):004:0> $'
    => ""
    irb(main):005:0> "catk"=~/(c|a)(t|z)/
    => 1
    irb(main):006:0> $'
    => "k"
    irb(main):007:0> "catkadfasdf"=~/(c|a)(t|z)/
    => 1
    irb(main):008:0> $'
    => "kadfasdf"
    
     
  • $=     Object     只要不为nil/false,则后面的模式匹配(正则表达式、Hash、字符串比较)都忽略大小写
  • $1 to $9     String     The contents of successive groups matched in the last successful pattern match. In "cat" =~/(c|a)(t|z)/, $1 will be set to “a” and $2 to “t”. This variable is local to the current scope. [r/o, thread]
  • $~     MatchData     An object that encapsulates the results of a successful pattern match. The variables $&, $`, $', and $1 to $9 are all derived from $~. Assigning to $~ changes the values of these derived variables. This variable is local to the current scope. [thread]

 

 

 

你可能感兴趣的:(设计模式,thread,c,正则表达式,Ruby)