首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

ruby_proc_lambda差别

2012-10-14 
ruby_proc_lambda区别?看书的一大好处是知道一些知识,将来可以省很多时间,例如知道一个方法,知道一个可能

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"
?

?

?

||)))

?

?

?

热点排行