ruby中特殊的全局变量

全局变量:由$开头,可以在程序的任何位置访问到。在初始化前,全局变量有一个特殊的值 nil。

这里列出了一些以$打头并跟单个字符的特殊变量,包括主要的系统变量以及它们的含义:

$! 最近一次的错误信息
[email protected] 错误产生的位置
$_ gets最近读的字符串
$. 解释器最近读的行数(line
number)
$& 最近一次与正则表达式匹配的字符串
$~ 作为子表达式组的最近一次匹配
$n
最近匹配的第n个子表达式(和$~[n]一样)
$= 是否区别大小写的标志
$/ 输入记录分隔符
$\ 输出记录分隔符

$0 Ruby脚本的文件名
$* 命令行参数
$$ Ruby解释器进程ID,只读
$? 最近一次执行的子进程退出状态

上面的 $_ 和 $~ 名字暗示其为全局的,但实际都有作用范围,这是由历史原因造成的。

时间: 2024-11-05 18:53:57

ruby中特殊的全局变量的相关文章

[转载]Ruby 中$开头的全局变量、内部变量、隐藏变量介绍

转自:http://www.jb51.net/article/48802.htm Ruby 中充满了一系列的隐藏变量,我们可以从这些预定义的全局变量中获取一些有意思的信息. 全局进程变量 $$ 表示当前运行的 ruby 进程. >> $$=> 17170 我们可以从当前进程杀死它自己 >> `kill -9 #{$$}`[1]    17170 killed     irb $? 表示最近一个子进程的状态 >> `echo hello`=> "he

在 Ruby 中执行 Shell 命令的 6 种方法

我们时常会与操作系统交互或在 Ruby 中执行 Shell 命令.Ruby为我们提供了完成该任务的诸多方法. Exec Kernel#exec 通过执行给定的命令来替换当前进程,例如: $ irb >> exec 'echo "hello $HOSTNAME"' hello codefun $ 注意 exec 利用 echo 命令替换了 irb 进程,然后退出.因为 Ruby 实际上结束了该方法,所以只能有限使用.该方法的缺点是,你无法从 Ruby 脚本中知道命令是执行成功

理解Ruby中的作用域

作用域对于Ruby以及其它编程语言都是一个需要理解的至关重要的基础知识.在我刚开始学习ruby的时候遇到很多诸如变量未定义.变量没有正确赋值之类的问题,归根结底是因为自己对于ruby作用域的了解不够,但在你看看完我的这篇文章后,相信你不会再担心会遇到这些头疼的问题. 什么是作用域? 当谈论到作用域的时候,应该马上想到变量和可见性这两个词,变量和可见性是作用域的主要内容,没错,作用域就是关于在代码的什么地方什么变量是可见的,当你充分了解了作用域后,给你一段代码,你可以轻易知道此时什么变量是可见的,

Ruby中的require、load、autoload

  require.load.autoload是Kernel模块中定义的方法,由于Class类和Object类都混入了Kernel模块,所以无论self是对象还是类,都可以调用这些方法. 这三个方法都用来加载和执行其他文件,但是有细微的不同,本文将从参数.函数执行.返回值三个方面简要介绍下这三个函数. 1. require(name) -> true or false or raise LoadError http://ruby-doc.org/core-2.1.2/Kernel.html#me

ruby中的作用域

作用域(scope)指的是变量的可达性或可见性.不同类型的变量有不同的作用域规则.与self类似,作用域在程序的执行过程中也在不断的变化,也可以根据上下文推断出"谁在什么作用域中".但是,self和作用域不是同一个东西,在self没有变化的时候,可以开始一个新的局部作用域,有时候,作用域和self一起改变. 全局作用域和全局变量:全局变量最不常用,但需要了解.全局变量用$开始,在整个程序的任何位置都可以访问,穿过所有的边界. 局部作用域:在任意时刻,程序都处在一个特定的局部作用域中.两

ruby 中的变量

1.变量和常量: 全局变量用$;   实例变量用@;   类变量用@@; Local Variable:  name fish_and_chips x_axis thx1138 _x _26Instance Variable:   @name @point_1 @X @_ @plan9Class Variable:  @@total @@symtab @@N @@x_pos @@SINGLEGlobal Variable:   $debug $CUSTOMER $_ $plan9 $Global

如何在Ruby中编写微服务?

[编者按]本文作者为 Pierpaolo Frasa,文章通过详细的案例,介绍了在Ruby中编写微服务时所需注意的方方面面.系国内 ITOM 管理平台 OneAPM 编译呈现. 最近,大家都认为应当采用微服务架构.但是,又有多少相关教程呢?我们来看看这篇关于用Ruby编写微服务的文章吧. 人人都在讨论微服务,但我至今也没见过几篇有关用Ruby编写微服务的.像样的教程.这可能是因为许多Ruby开发人员仍然最喜欢Rails架构(这没什么不好,Rails本身也没什么不好,但是Ruby可以做到的事还有很

ruby中的instance_eval,class_eval,eval

ruby具有在运行时执行以字符串形式保存的代码的功能设施,eval族方法 .包括Kernel#eval,Object#instance_eval,Module#class_eval. Kernel#eval 它是最直接的方法 如下: 1 p eval("2+2") 2 3 eval("def m;p 'hello world';end") 4 eval("m") 输出 4"hello world" eval强大而危险,有代码注

谈谈Ruby中的类变量

Ruby中的类变量,很多文章都是不太建议使用的,主要原因在于他的一些特性容易导致犯一些错误,尤其在广泛使用元编程的时候. 初步接触类变量可能觉得他跟C++的类静态成员和Java中的静态变量没什么区别,但在实际使用中一不留神就会掉到类变量的陷阱中去 陷阱1,类变量跟类实例变量不同,类实例变量关联的是self,但类变量关联的是当前类作用域 class C end class D end class C @@var = "C" def D.getvar @@var end end class