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

#局部变量与块变量的区别
#块内部的命名空间和与块外部是共享的在块外部定义的局部变量在块中也可以继续使用
#块变量与块外部的变量同名 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提供了块变量以外的块局部变量。

转载于:https://my.oschina.net/u/3544267/blog/1570467

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值