首页 文章

什么是触发器和lambdas?实际例子请[复制]

提问于
浏览
3

可能重复:何时使用lambda,何时使用Proc.new?

(我知道有几次被问过,但我找不到满意的答案)有人可以解释一下Blocks,Procs和Lambdas以及为什么应该使用其他的,当一个人应该使用proc,类似和/或拉姆达 . 还会对计算机内存产生影响 . 请举例说明 .

1 回答

  • 7

    试试Robert Sosinski's TutorialLearning to Program by Chris Pine .

    为了更多基础,我建议你阅读Why’s (poignant) Guide to Ruby . 本指南负责创建许多现在的Ruby专业版!一定要看看!

    Joey deVilla的解释
    另一个重要但微妙的区别在于使用lambda创建的procs和使用Proc.new创建的procs处理return语句的方式:在lambda创建的proc中,return语句仅从proc本身返回在Proc.new创建的proc中, return语句更令人惊讶:它不仅从proc返回控制,还从包含proc的方法返回控制!这是lambda创建的proc的回归 . 它表现得像你可能期望的那样:defowowwinwin

    mylambda = lambda {return“Freddy”}
    mylambda.call

    #mylambda被调用并返回“Freddy”,并执行
    #继续下一行

    回归“杰森”

    结束

    whowouldwin

    “杰森”
    现在,这是一个Proc.new创建的proc的返回做同样的事情 . 你将要看到其中一个案例,其中Ruby打破了大肆吹嘘的最低惊喜原则:defowouldwin2

    myproc = Proc.new {return“Freddy”}
    myproc.call

    #myproc被调用并返回“Freddy”,
    #还可以从whowhouldwin2返回控制权!
    #下面的行从不执行 .

    回归“杰森”

    结束

    whowouldwin2

    “弗雷迪”
    由于这种令人惊讶的行为(以及较少的打字),我倾向于在制作过程时使用lambda而不是Proc.new .

相关问题