Ruby中的预定义变量_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Ruby中的预定义变量

Ruby中的预定义变量

 2010/12/11 11:30:33  qianjigui  http://qianjigui.javaeye.com  我要评论(0)
  • 摘要:原文地址PredefinedVariables翻译了一部分。下列内容讨论的是Ruby解析器中预定义的变量,在这些讨论中有一些标示需要预先做一下说明。[r/o]表示这个变量是只读的,如果说程序代码中试图修改这些只读变量则解析器会抛出错误。[thread]表示这个变量是一个线程内的变量。由于历史原因,Ruby中的很多全局变量沿袭自脚本语言Perl。这些全局变量看起来像动画片任务Snoopy的口头禅,例如$_,$!,$&等等。Ruby语言的设计者为了方便使用者记忆和使用这些变量
  • 标签:预定义变量 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]

?

?

?

发表评论
用户名: 匿名