Ruby中的block、proc、lambda区别总结
在规则引擎中,Ruby的闭包使用特别频繁,而且有block,Proc和lambda等后几种形式的用法,很让人困惑。为了深入理解代码,再次认真学习了一下Ruby的闭包,特别是block,proc和lambda几种用法的异同,这次的周记就和大家分享一下心得。
闭包是Ruby相对其它语言特别优势之一,很多语言有闭包,但是唯有Ruby把闭包的优势发挥得淋漓尽致。Ruby的哲学之一:同一个问题现实中有多种解决方法,所以Ruby中也有多种解法,所以闭包的使用也有多种方法。
先看一个代码的例子:
Example1:
deffoo1 yield end
deffoo2(&b) b.callifb end
foo1{puts"foo1inblock"} foo2{puts"foo2inblock"} proc=Proc.new{puts"fooinproc"} foo1(&proc) foo2(&proc) lambda_proc=lambda{puts"fooinlambda"} foo1(&lambda_proc) foo2(&lambda_proc)
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下