作者Neisseria (Neisseria)
看板Ruby
标题[分享] Ruby 的 Closure (block, Proc, lambda)
时间Fri Sep 7 16:27:48 2018
任意门 (英文)
http://bit.ly/2MSPqfr (AppSignal 文章)
加码某板友的文章 (中文)
https://tonytonyjan.net/2011/08/12/ruby-block-proc-lambda/
block, Proc, lambda 三者都是用来写函数式程式的
这三者的异同应该算是 Ruby 重要的月经题
先来个懒人包:
1. block 本质上是 Proc,但不能存在变数中
2. Proc 和 lambda 皆可存在变数中,故可重覆使用
3. lambda 会检查变数数量 (arity),但 Proc 不会
4. 在方法中呼叫 lambda,若 lambda 有 return,控制权回原方法
在方法中呼叫 Proc,若 Proc 有 return,会跳出该方法
还是建议点进去看过一遍原文章,不要死记懒人包的结论
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.115.84.57
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ruby/M.1536308871.A.5BE.html
※ 编辑: Neisseria (59.115.84.57), 09/07/2018 16:30:48
1F:推 b0w1d: 感谢分享 09/07 16:54
2F:推 davidyun: 推 09/07 23:42
3F:推 tonytonyjan: 推 09/11 22:13