Day-12 Ruby里Block,Proc,Lambda差别?

大家常常搞混的三兄弟,我们一起来了解他们!


Block 是程序码区块,不能单独存活,要接在方法(method)後面才能活!
写法有2种,{ }do…end,2种写法,Block 在 Ruby 算是满特殊的存在。(Block不是物件,前面有提到!)
2种写法的差异是 { } 的优先顺序大於 do…end。


既然Block不是物件,有时不好运用,於是又生出来另外2兄弟 Proc 和 Lambda,这2兄弟可以将 Block 物件化。

主要差异简单来说

1.是否会检查参数,Proc 比较弹性,Lambda 比较严格
2.不同return的效果,Proc 会在作用域( Scope )执行,Lambda 会完整执行


参考资料

1.https://5xruby.tw/posts/discover-ruby-block
2.https://sharefunyeh.gitbooks.io/webdev/content/articles/ruby_block_proc_lambda.html
3.https://chienhao.tw/Metaprogramming-Ch4-Part3


<<:  Day 12 : 案例分享(4.1) 签核与费用模组 - 费用申请流程

>>:  [DAY-13] 走向全球

【Day 30】 一趟挑战失败的铁人赛英雄之旅

大家好,2020 铁人赛来到了最後一天。我自己是没想过竟然可以连写两年。 最後一天当然要写心得文,这...

Day-23 爹不疼娘不爱、任天堂史上最失败的 WiiU

在上个世代如流星般横空出世的 Wii 由於本身机能的不足、加之智慧型手机的夹攻下、很快地就陷入了疲态...

Ruby on Rails CSRF 攻击是什麽?

CSRF(Cross-site request forgery)中⽂翻译成「跨站请求伪造」。通常 C...

Day 15:完了,我的Coroutine漏出去了.Coroutine的Leak与结构化

Keyword:Coroutine Leak,Structured Concurrency Memo...

OpenStack Neutron 介绍 — OVN vs OVS

本系列文章同步发布於笔者网站 上一篇讲述了 OVN Plug-in 在 OpenStack 中的参考...