iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
自我挑戰組

打破結界~ Ruby on Rails ~面試題!系列 第 12

Day-12 Ruby裡Block,Proc,Lambda差別?

  • 分享至 

  • xImage
  •  

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


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-11 Ruby裡字串的單引號和雙引號差別?
下一篇
Day-13 Ruby簡單的程式考題!
系列文
打破結界~ Ruby on Rails ~面試題!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言