浅谈Ruby中的block, proc, lambda, method object的区别
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 当大家在百度中搜索“block proc lambda”的时候,会出来很多关于这几个概念之间区别的介绍,既然搜索结果中已经有了这些介绍,那为什么还要写这篇文章? 相信看过百度搜索结果中排名靠前的几篇文章的同学,都会发现其实这些文章并没有很好的说明他们之间区别是什么,大多只是介绍各自的用法,加上些许的区别,即使个别介绍了一些区别,也不够系统,不够深入。 正是基于上述原因,才酝酿了本文。本文以简单示例的方式,详细的介绍了它们之间的区别。相信您阅读完本文,一定会豁然开朗,并在今后的开发中准确并优雅的使用它们。 由于时间,个人能力水平等有限,本文难免有错误或缺失之处,欢迎不吝指出。 block & proc 在介绍它们的区别之前,我们先来看一段有关block的简单使用方法: def use_yield yield end use_yield do puts 'use yield' end def use_block_call(&block) block.call end use_block do puts 'use block call' end 以上介绍了两种在函数中使用block的方式,第一种是通过yield来使用block,另外一种则是通过block.call来使用block。