Ruby中变量引用时的一些注意点
在表达式中,当Ruby看到像a这样的名字时,它需要判断a是一个局部变量引用还是对没有参数的方法a的调用。Ruby使用一种启发式的方法来判断这种情况。当Ruby解析源代码文件时,它会记录所有已经被赋值的符号。它认为这些符号是变量。以后当遇到一个既可以是变量又可以是方法调用的符号时,Ruby会检查是否已经对该符号进行了赋值。如果是,那么把该符号当作变量,否则当作方法调用。下面是描述这种情况的一个人为设计的例子。
def a print "Funciton 'a' called\n" 99 end for i in 1..2 if i ==2 print "a=",a,"\n" else a=1 print "a=",a,"\n" end end
输出结果:
a=1 Function 'a' called a=99
当解析的时候,Ruby看到第一个print语句使用了a,并且由于还没有遇到对a的任意赋值语句,所以把它当作方法调用。但是当解析到第二个print语句时,由于Ruby遇到了对a的一个赋值语句,所以把它当作变量
注意赋值语句不一定被执行--只要Ruby看到它了就可以。下面的程序不会导致错误
a=1 if false;a
相关推荐
-
Ruby中变量引用时的一些注意点
在表达式中,当Ruby看到像a这样的名字时,它需要判断a是一个局部变量引用还是对没有参数的方法a的调用.Ruby使用一种启发式的方法来判断这种情况.当Ruby解析源代码文件时,它会记录所有已经被赋值的符号.它认为这些符号是变量.以后当遇到一个既可以是变量又可以是方法调用的符号时,Ruby会检查是否已经对该符号进行了赋值.如果是,那么把该符号当作变量,否则当作方法调用.下面是描述这种情况的一个人为设计的例子. def a print "Funciton 'a' called\n" 99
-
PHP中变量引用与变量销毁机制分析
本文实例分析了PHP中变量引用与变量销毁机制.分享给大家供大家参考.具体分析如下: 变量是php中一个非常重要的类型了,我们的有数据都通过变量或常量来进行操作,下文来看看变量引用与变量销毁. 在php中,符号"&"表示引用. 1.看看不引用的情况是这样子: 复制代码 代码如下: $a = "hello world";//定义一个变量,下面赋值给$b $b = $a;//这一步没有在$a之前加符号&,像这样子"$b= & $a&qu
-
PHP的foreach中使用引用时需要注意的一个问题和解决方法
一.问题先看一个例子: <?php$ar = array(1, 2, 3);var_dump($ar);foreach ($ar as &$v) {}foreach ($ar as $v) {}var_dump($ar);?>输出为: array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}array(3) { [0]=> int(1) [1]=> int(2) [2]=> &
-
详细解析Ruby中的变量
变量持有要使用的程序的数据的存储位置. Ruby支持的有五种类型的变量.在前面的章节中已经经历了一个简短描述以及这些变量.本章中介绍的这五种类型的变量. Ruby的全局变量: 全局变量以$开头.未初始化的全局变量的值是零,并使用-w选项产生警告. 全局变量的赋值会改变全局状态.这是不推荐使用全局变量.他们使得程序的含义模糊. 下面是一个例子显示使用全局变量. #!/usr/bin/ruby $global_variable = 10 class Class1 def print_global p
-
Ruby中的变量学习总结
Ruby中的变量有几种形式,分别是局部变量.实例变量.类变量.全局变量,对于初学者来说,常常容易搞混,尤其像本人这种做java的,理解起来还是头痛,经过仔细辨别学习,将这几种变量的差异及使用场景总结如下: 一.命名方式 1.局部变量:小写字母或者"_"开头,如user,解释器解释到时才开始在内存中存在,一个良好的习惯是在进行变量定义时用nil进行赋值初始化,否则会出现类似undefined local variable or method `z'的错误: 2.实例变量:@开头,如@us
-
实例讲解Ruby中的五种变量
Ruby 全局变量 全局变量以 $ 开头.未初始化的全局变量的值为 nil,在使用 -w 选项后,会产生警告. 给全局变量赋值会改变全局状态,所以不建议使用全局变量. 下面的实例显示了全局变量的用法. #!/usr/bin/ruby $global_variable = 10 class Class1 def print_global puts "Global variable in Class1 is #$global_variable" end end class Class2 d
-
在js中使用"with"语句中跨frame的变量引用问题
在脚本编程时使用with语句,可以大大的缩减使用多级对象引用代码行的长度,这是JScript提供给我们的一个Syntax Sugar.当然不使用with,使用临时变量也可以达到同样的效果.不过创建变量时起名确实不是一件很遐意的事,就连MASM高版本中也提供了一个@@(以及@F和@B)来处理临时标号的问题,看来大家都是比较懒得啦. 我也挺喜欢用with语句的,确实可以省不少的事情,而且可以让代码变得也清晰些,特别是在处理跨frame的变量引用时,更加显得方便.这不今天就因为贪图方便又撞到枪口上了,
-
php中引用&的用法分析【变量引用,函数引用,对象引用】
本文实例分析了php中引用&的用法.分享给大家供大家参考,具体如下: php的引用(就是在变量或者函数.对象等前面加上&符号) //最重要就是 删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁 在PHP 中引用的意思是:不同的名字访问同一个变量内容. 变量的引用 PHP 的引用允许你用两个变量来指向同一个内容 <?php $a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b=&q
-
JavaScript中变量、指针和引用功能与操作示例
本文实例讲述了JavaScript中变量.指针和引用功能与操作.分享给大家供大家参考,具体如下: 1.变量 我们可能产生这样一个疑问:编程语言中的变量到底是什么意思呢? 事实上,当我们定义了一个变量a时,就是在存储器中指定了一组存储单元,并将这组存储单元命名为a.变量a的值实际上描述的是这组存储单元中存放的具体信息. 例如,在JS中 var a; a=10; 第一个语句在存储器中指定了一组存储单元,并命名为a: 第二个语句在这组存储单元中存储了数字10. 变量a的值为10实际上是说存储单元组a存
-
Ruby 中$开头的全局变量、内部变量、隐藏变量介绍
Ruby 中充满了一系列的隐藏变量,我们可以从这些预定义的全局变量中获取一些有意思的信息. 全局进程变量 $$ 表示当前运行的 ruby 进程. 复制代码 代码如下: >> $$=> 17170 我们可以从当前进程杀死它自己 复制代码 代码如下: >> `kill -9 #{$$}`[1] 17170 killed irb $? 表示最近一个子进程的状态 复制代码 代码如下: >> `echo hello`=> "hello\n&qu
随机推荐
- 可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
- 气象 XML 数据源应用程序开发指南-简介
- VBS基础编程教程 (第4篇)
- Vue学习之路之登录注册实例代码
- 正则表达式查找相似单词的方法
- 高性能WEB开发 nginx HTTP服务器篇
- Java class文件格式之常量池_动力节点Java学院整理
- Python中splitlines()方法的使用简介
- 20分钟轻松创建自己的Bootstrap站点
- ASP.NET中GridView的文件输出流方式
- php 计算两个时间戳相隔的时间的函数(小时)
- PHP循环获取GET和POST值的代码
- Vue.JS入门教程之自定义指令
- Mysql服务器的启动与停止(二)
- BootStrap智能表单demo示例详解
- jQuery联动日历的实例解析
- js实现简单计算器
- 常用js字符串判断方法整理
- JS仿万科底部的新闻滑动特效代码
- ActiveMQ基于zookeeper的主从(levelDB Master/Slave)搭建