如何进行代码块打包 && proc vs lambda

proc和lambda的对比:

proc和lambda都是代码块打包的工具
不同之处在于:
proc对参数的自适应性,多则删,少填nil;lambda严格匹配
proc从block中返回,而lambda从function中返回

block is not a object in truth,but method is a clallable object

callable objects wrap-up

可调用对象本质上是可以执行的代码片段(拥有自己的作用域)
块在定义它的作用域中执行;
proc也跟块一样,也在定义它们的作用域中执行
lambda和proc一样都是闭包,同样在定义它的作用域中执行
method绑定于对象,在绑定的对象的作用域中执行,它们可以与这个作用域解除绑定,再重新绑定到另一个对象的作用域上。(与其说绑定到对象上,不如说绑定到作用域上。)
在方法和lambda中,return语句从可调用对象(我的理解是function)中返回,在block和proc中,return从定义可调用对象的原始上下文(我的理解是块本身)中返回。
如果proc代码块中的ruturn引起错误,可以通过隐去return关键字,来避免错误的出现。
一种可调用对象,可以转换成另一种可调用对象:
Proc.new()
Method#to_proc()
& operator

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,777评论 19 139
  • 最近复习了下 ruby 对象模型的知识,参照了 Ruby Metaprogramming,于是边看边做笔记,还是收...
    张羽辰阅读 3,502评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,154评论 18 399
  • 花香袭人 美酒醉人 甜蜜的气泡酒 比茶要摇摇欲坠些 淡淡的果香与悠游的甜味 似是有着温馨甜笑的曼妙女郎 春日里最浪...
    元宝团子多喜乐阅读 2,972评论 0 1
  • 一座乌烟瘴气的城市,轻飘飘的烟尘,遮掩着慵懒的人们。但凡在这里呆上一段时间,就会察觉这里的人奇怪的地方。因为你观察...
    达达尼央阅读 1,657评论 0 0