(2)
(3)
(4)
(5)
(6)#块的另外一种用法是可以确保后处理被执行,这样可以防止类似忘记关闭文件等错误的发生。
(7)
(8)
等价于
(9)
(10)
(11)给方法传递块参数的用法
(12)块变量的使用实例
(13)上例的分析解释
块变量比较多时,多出来的块变量值为 nil,而块变量不足时,则不能接收参数值。
最后的通过 |*a| 接收的情况是将所有块变量整合为一个数组来接收。这与定义方法时接收可变参数的情况非常相似。
注意执行过程是:yield(),yield(1),yield(1,2,3)这三个去执行第一个do语句块,得到nil,1,1
然后这三个yield再去执行第二个do语句块,执行完再去执行第三个do语句块。
(14)
?
原文:http://www.cnblogs.com/blueColdFire/p/5185335.html