ruby_proc_lambda区别
?
看书的一大好处是知道一些知识,将来可以省很多时间,例如知道一个方法,知道一个可能的bug存在的地方。
实践的好处是把这些知识变成懂得和深入理解。
?
ruby_proc_lambda区别:
proc:形如proc中的代码在当前方法内,这样这些代码中如果有return,则退出了整个方法
lambda:形如当前方法外的一个方法,return只会返回结果给当前语句,后面的语句继续执行
?
本质上来理解,可以借鉴python的yield执行的细节以及ruby自己lyber
当前语句碰到lambda,会把执行指针指向lambda的block,让出了当前执行context,执行完后再回来;
但proc的block仍会在当前的context中执行,不存在执行context的出让;
?
from?http://samdanielson.com/2007/3/19/proc-new-vs-lambda-in-ruby?的一个很好的例子:
?
def foo f = Proc.new { return "return from foo from inside proc" } f.call # control leaves foo here return "return from foo"enddef bar f = lambda { return "return from lambda" } f.call # control does not leave bar here return "return from bar"endputs foo # prints "return from foo from inside proc"puts bar # prints "return from bar"?
?
?
(
(
(
||)))?
?
?