Ruby 局部变量做block参数

本文深入解析了Ruby中yield语句如何在调用block时带参数,以及参数如何影响block执行过程。讨论了block内部变量与外部变量的共享规则,并通过实例展示了参数传递对block行为的影响。

   Ruby中使用yield语句调用block时可以带有参数,参数值见传送个相关联的block。如果传给block的参数是已经存在的局部变量,那么这些变量即为block的参数,他们的值可能会因block的执行而改变。

       同样的规则也适用于block内的变量:如果他们第一次出现在block内,那么他们就是block的局部变量。相反,如果他们第一次出现在block外,那么block就与其外部环境共享这些变量。

       例如:

a =[4,2]
b ='cat'
c =1

a.each{|b|
  c = b*a[1]
  d = c+2
}

p a =>[4,2]
p b =>2
p c =>8
pdefined?(d)=>nil

     b和c都是block外部的局部变量,b作为block的参数,c是block内的变量,block与外部环境共享这些变量,它们的值因block的执行而改变;

    d是block内部局部变量,只在block内部有效

转载于:https://www.cnblogs.com/zs-note/p/3346683.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值