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内部有效

最新文章

  1. js中的prototype和__proto__
  2. [NHibernate]一对多关系(关联查询)
  3. Android客户端稳定性测试——Monkey
  4. 图片下载缓存防止OOM
  5. 【原】gulp快速入门
  6. ATS(App Transport Security)对HTTP协议屏蔽引起的问题
  7. Chrome书签被篡改之后的恢复
  8. 使用TarOutputStream出现 request to write '1024' bytes exceeds size in header错误的解决方法
  9. bsp STEP
  10. 组合模式(Composite Pattern)
  11. 通过DOS、SHELL批处理命令加载Lib并编译和打包Java项目(或者运行项目)
  12. postgresql基本操作:查看数据库、索引、表、表空间大小
  13. libevent库的使用方法
  14. ORACLE 对用户密码做限制
  15. Win7关机出现关闭程序提示框
  16. iOS程序性能优化
  17. Menu bar missing from ClearCase Explorer
  18. BZOJ 1093 [ZJOI2007]最大半连通子图
  19. ZOJ-2587-Unique Attack(最小割的唯一性)
  20. 编写在浏览器中不弹出警告的ActiveX控件

热门文章

  1. Android系统移植与调试之------->如何修改Android设备添加3G上网功能
  2. Sql Server2008——存储过程编程简单例子
  3. Data Structure Array: Find the Missing Number
  4. 【五】MongoDB管理之生产环境说明
  5. mini2440移植uboot 2014.04(一)
  6. Vim的map
  7. POJ 2536 之 Gopher II(二分图最大匹配)
  8. 处理 javax.el.ELException: Failed to parse the expression 报错
  9. TCP/IP 协议中的编址
  10. 程序以html形式发送邮件注意问题