文档章节

Ruby中 局部变量(local variable) 块变量(block variable) 与块局部变量(block local variable)

穿山
 穿山
发布于 2017/11/09 14:41
字数 546
阅读 31
收藏 0
#局部变量与块变量的区别
#块内部的命名空间和与块外部是共享的在块外部定义的局部变量在块中也可以继续使用
#块变量与块外部的变量同名 Ruby会认为他们是两个变量
x, y = 1, 1 #初始化局部变量x y
ary = [1, 2, 3]

ary.each do |x| #将x做为块变量使用
  y = x #将块变量x的值赋给局部变量y
end

p [x, y] #输出1和3 因为x的值没有发生改变,刚才改变的是块变量x
#当把y注释掉则会报错 NameError
#说明在块内部定义的变量不能被外部访问
#所以在块内部给局部变量赋值的时候一定要当心
#块变量只能在块内部使用,不能覆盖外部的局部变量
x = 1 #初始化局部变量x y
# y = 1
ary = [1, 2, 3]

ary.each do |x| #将x做为块变量使用
  y = x #将块变量x的值赋给局部变量y
end

p [x, y] #输出1和3 因为x的值没有发生改变,刚才改变的是块变量x
#但是Ruby提供了在块内定义局部变量的方法
x, y, z = 0, 0, 0
ary = [1, 2, 3]

ary.each do |x; y| #定义块变量x 块局部变量y
  y = x #对块局部变量y赋值
  z = x #对局部变量z赋值
  p [x, y, z]
end

p [x, y, z] #输出[0,0,3]
#x输出0同理,y输出零是因为在块中输出的y是块局部变量
#所以实际上局部变量y的值没有改变

总结

1 在块外部定义的局部变量在块内部是可以使用的。但是在块内部定义的变量不能被外部访问。

2 当块变量的名字与局部变量的名字相同时Ruby会认为他们是不同的变量,块变量只能在块内部使用不能覆盖外部的局部变量。

3 Ruby提供了块变量以外的块局部变量。

© 著作权归作者所有

穿山
粉丝 9
博文 33
码字总数 18655
作品 0
南京
私信 提问
代码块(block)的使用

代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。 脱字符(^)是块的语法标记。按照我们熟...

啊子同
2016/07/22
10
0
在switch中的case语句中声明变量

本人今天在编写工具类时,无意之间发现,在Java的Swith语句的case语句中声明局部变量时出现了一个奇怪的问题。 废话少说,先列出例子,一看便知。 情景一:case 1中声明变量x,case 2中不能再...

Leech
2015/10/08
541
0
objective-c ——代码块

通过代码块(block)功能,你就能像对待对象一般,指定要在方法和函数中传递任意代码部分。 代码块的声明: int main (int argc, const char * argv[]) { @autoreleasepool { void (^myBlock...

长平狐
2013/03/19
161
0
OC中block使用相关

代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。 脱字符(^)是块的语法标记。按照我们熟...

托楚齐坎基基
2016/02/27
34
0
JVM学习笔记-操作数栈(Operand Stack)

操作数栈其实就是相当于操作系统中用来存储接下来要被处理的数值的寄存器,只是JVM中用操作数栈来实现这类寄存器的功能 Like the local variables, the operand stack is organized as an a...

Henrykin
2016/10/30
18
0

没有更多内容

加载失败,请刷新页面

加载更多

elasticsearch查询20公里以内的数据并按距离升序排序data es写法

NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();BoolQueryBuilder boolQueryBuilder=new BoolQueryBuilder();//这暂wei加入业务查询条件 queryBuilder.withQue......

为何不可1995
9分钟前
0
0
superset在线pip部署

1、安装依赖sudo yum install gcc libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel报错:没有可用软件包 python-pip。没有可用软件包 ......

阿伦哥-
14分钟前
1
0
photoshop简单使用

PS基本操作与图片格式 photoshop工具 组成 菜单项 工具栏 辅助面板 图片格式 jpg png gif 注: psd photoshop CC链接: https://pan.baidu.com/s/1LVa5R_btSjczLBwskCZidQ 提取码:sc3v 快捷...

studywin
16分钟前
0
0
springboot 整合pageHelper

今天跟大家聊聊springboot整合pageHelp,首先pageHelper是一个缓存式分页,分页步骤如下: 1 pom文件添加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelp......

gaofei123
16分钟前
1
0
《DNS攻击防范科普系列1》—你的DNS服务器真的安全么?

DNS服务器,即域名服务器,它作为域名和IP地址之间的桥梁,在互联网访问中,起到至关重要的作用。每一个互联网上的域名,背后都至少有一个对应的DNS。对于一个企业来说,如果你的DNS服务器因...

大涛学弟
17分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部