`

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]

 

 

 

分享到:
评论

相关推荐

    Ruby Pocket Reference.pdf

    文档提到了一些关键内容的目录结构,例如运行 Ruby 解释器、使用 Unix/Linux 系统中的 Shebang 行、在 Windows 上关联文件类型、Ruby 的保留字、运算符、注释、数字、变量、符号、预定义变量、伪变量、全局常量、...

    Ruby电子书下载Ruby语言中文教程

    Ruby标准库非常丰富,包含了大量预定义的模块和类,涵盖了网络通信、文件处理、文本处理、日期和时间等多个领域。此外,Ruby还有大量的第三方库,如Rails(一个流行的Web开发框架)和Sinatra(轻量级Web框架),它们...

    Ruby语言中文教程

    例如,`File`类提供了一系列用于文件操作的方法,`STDIN`, `STDOUT`, `STDERR`是标准输入、输出和错误流的预定义对象。 Ruby on Rails是Ruby的一个著名框架,用于构建Web应用。它遵循MVC(模型-视图-控制器)架构...

    Ruby.Pocket.Reference.2nd.Edition.2015.8.pdf

    - **预定义全局变量**:列出并解释了Ruby环境中预定义的一些全局变量,如`$!`、`$&gt;`等。 - **正则表达式**:提供了正则表达式的构建规则及常用方法,帮助处理文本匹配与搜索问题。 ##### 3. 条件语句、方法使用、类...

    Ruby-RDoc用于为Ruby项目生成HTML和命令行文档

    RDoc的主要功能包括解析Ruby源代码中的特殊注释,这些注释通常以三个或四个星号(`* * *`或`****`)或双下划线(`__`)开始,用于标记类、方法、变量等。RDoc能够识别这些特殊的注释格式,并将它们转换为HTML或...

    Ruby Sheet.pdf

    本篇文档将详细介绍Ruby速查手册中提到的关键知识点,包括预定义变量、保留字、类型、表达式、模块/类定义以及运算符和正则表达式的使用方法。 #### 预定义变量 Ruby提供了一系列预定义变量来帮助开发者在编程过程...

    Ruby袖珍参考手册

    Predefined Variables(预定义变量)** - Ruby中有一系列预定义的变量,用于特定的用途。例如`$!`表示最后发生的错误,`$&gt;`表示当前命令执行者的权限。 **2. Pseudovariables(伪变量)** - 这些变量的行为类似...

    关于ruby学习的资料

    6. 标准库:Ruby的标准库包含大量预定义的模块和类,涵盖了网络通信、文件操作、日期时间处理等多个领域。 7. 社区支持:Ruby拥有活跃的开发者社区,如Ruby on Rails框架的流行,带动了大量高质量的开源项目和工具...

    Everyday Scripting With Ruby

    - **定义**:应用程序框架提供了一个结构化的方法来开发应用,通常包括一组预定义的组件和服务。 - **Ruby on Rails**:这是最著名的Ruby框架之一,遵循MVC(模型-视图-控制器)模式,简化了Web应用程序的开发过程。...

    Ruby语言教程.docx

    - `RUBY_VERSION`是预定义常量,表示当前Ruby解释器的版本号。 **脚本编写:** - **shebang:** 在Unix系统中,脚本的第一行通常包含shebang(`#!/usr/bin/ruby`),指定解释器路径。 - **注释:** 使用`#`字符来...

    Ruby-云片短息ruby服务器端api

    将密钥存储在一个安全的地方,如环境变量中,避免硬编码在代码里: ```ruby api_key = ENV['YUNPIAN_API_KEY'] ``` 然后,创建一个YunPianSMS的客户端实例,使用这个API密钥初始化: ```ruby client = YunPianSMS...

    Ruby 数据类型.pdf

    布尔值用于表示逻辑真和逻辑假,Ruby中有两个预定义的布尔值:`true` 和 `false`。 - **布尔操作**:支持逻辑与(`&&`)、逻辑或(`||`)、逻辑非(`!`)等运算。 #### Nil `nil` 是一种特殊类型的对象,表示没有任何值...

    ruby sass compass

    安装完成后,Ruby的命令行工具(如`ruby`, `gem`)将被添加到系统的PATH环境变量中,这样你就可以在任何地方调用它们。 接下来,我们关注Sass的安装。Sass是CSS的扩展,它引入了变量、嵌套规则、混合、函数等特性,...

    Ruby-pygmentsrbPythonpygments语法高亮显示的一个Ruby包装器

    - **丰富的样式**:`Pygments` 提供多种预定义的样式表,可以改变颜色方案和字体样式,以适应不同的环境和偏好。 - **自定义扩展**:如果需要处理未被内置支持的语言,可以通过编写自定义的语法定义来扩展 `Pygments...

    ruby_1_9_3_stdlib_rdocs.gz

    Ruby 的标准库是一个庞大的集合,它包含了各种预定义的模块、类和方法,涵盖了网络通信、文件操作、文本处理、日期时间等多个领域。这些类库无需额外安装,可以直接在 Ruby 环境中使用,极大地简化了开发工作。 二...

    简单的Ruby应用程序

    10. **标准库和Gem**:Ruby有一个丰富的标准库,提供了大量预定义的模块和类。此外,Ruby的生态系统中,Gem是扩展和分享代码的主要方式,可以通过`gem install`命令安装。 在"simple-ruby-app-master"这个项目中,...

    这个项目的ui示例是flutter的 -Dart-Ruby-下载

    3. **Flutter Widget**:掌握Material Design原则,熟悉各种预定义的Widgets(如TextField、Button、ListView等)以及如何组合它们来创建复杂的UI。 4. **状态管理**:了解Flutter中的状态管理方法,如Provider、...

    liquor:Liquor 是一种用于 Ruby 的安全沙盒编译模板语言

    假设templates是将模板名称哈希映射到内容和预定义变量,以下代码演示了Liquor::Manager的用法: manager = Liquor :: Manager . new templates . each do | name , ( body , predefined ) | if manager . ...

    vagrant_2.2.5_x86_64.msi

    记得在安装后将Vagrant的可执行文件路径添加到系统的PATH环境变量中,以便在任何目录下都可以通过命令行运行Vagrant命令。 总的来说,Vagrant是一个强大的工具,它简化了虚拟机的管理和部署,促进了团队协作,确保...

Global site tag (gtag.js) - Google Analytics