Ruby 局部变量做block参数
2024-10-21 11:56:55
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内部有效
最新文章
- js中的prototype和__proto__
- [NHibernate]一对多关系(关联查询)
- Android客户端稳定性测试——Monkey
- 图片下载缓存防止OOM
- 【原】gulp快速入门
- ATS(App Transport Security)对HTTP协议屏蔽引起的问题
- Chrome书签被篡改之后的恢复
- 使用TarOutputStream出现 request to write '1024' bytes exceeds size in header错误的解决方法
- bsp STEP
- 组合模式(Composite Pattern)
- 通过DOS、SHELL批处理命令加载Lib并编译和打包Java项目(或者运行项目)
- postgresql基本操作:查看数据库、索引、表、表空间大小
- libevent库的使用方法
- ORACLE 对用户密码做限制
- Win7关机出现关闭程序提示框
- iOS程序性能优化
- Menu bar missing from ClearCase Explorer
- BZOJ 1093 [ZJOI2007]最大半连通子图
- ZOJ-2587-Unique Attack(最小割的唯一性)
- 编写在浏览器中不弹出警告的ActiveX控件
热门文章
- Android系统移植与调试之------->如何修改Android设备添加3G上网功能
- Sql Server2008——存储过程编程简单例子
- Data Structure Array: Find the Missing Number
- 【五】MongoDB管理之生产环境说明
- mini2440移植uboot 2014.04(一)
- Vim的map
- POJ 2536 之 Gopher II(二分图最大匹配)
- 处理 javax.el.ELException: Failed to parse the expression 报错
- TCP/IP 协议中的编址
- 程序以html形式发送邮件注意问题