• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > Ruby中使用Block、Proc、lambda实现闭包

Ruby中使用Block、Proc、lambda实现闭包

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了ruby proc,ruby,ruby rose,ruby什么意思,max and ruby等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

闭包(Closure),是指未绑定到任何对象的自由代码,闭包中的代码与任何对象和全局变量无关,只与执行此段代码的上下文相关。

今天我们简要的看一下ruby中的闭包实现。

Ruby中的闭包实现有:Block,Proc,Lambada。

首先,我们来看Block。
ary = [1,2,3,4]

ary.collect! do |a|

        a*a

end

ary.each do |a|

        puts a

end</div>

这段代码,我们使用了Array对象的block方法,将ary中的每个元素平方一把。从例子中我们可以看到block使用起来很方便,想必传统的Java以及C编码,省略掉了冗余的循环,让你更加专注业务代码,这也是ruby的好处之一。

使用block的最大好处就是可以省略重复的冗余的无用的代码,我们再来看一个读文件的例子:

#file block

File.open(__FILE__) do |f|

puts f.readlines

end</div>

对比我们用Java代码来读文件,每次都很反感那个冗长的try-catch-finally。从上面的ruby代码中我么可以看到,ruby语言给你做了处理,通过block你可以不用写无用的系统代码了。

从上面的例子我们可以看到,Ruby中的Block对开发者来说,不用再写那些冗余无用的系统代码,而是更加专注业务代码,提升开发效率。

其次,我们再看Proc。

如果你经常使用Block,你会发现一个问题:代码中会有很多重复的Block,比如好多地方需要打印文件内容。怎么解决呢?你第一个想到的是写一个公共函数,不错,可以解决。但是记住你使用的是ruby语言,不要重新造轮子。Ruby提供了函数化的Block:Proc。

我们看一个简单的Proc例子:
#file block with Proc

p = Proc.new{|f| puts f.readlines}

File.open(__FILE__, &p)</div>

上面例子可以看到,将Block代码定义为一个Proc对象,然后在使用Block的地方用Proc替换,这样就做到了完美的代码复用。

最后我们看看lambda。

Lambda是一种表达式的名称,ruby中可以通过lambda表达式创建Proc对象。我们先看例子:
#file block with Proc created with lambda

new_p = lambda{|f| puts f.readlines}

File.open(__FILE__, &new_p)</div>

上面例子中,我们使用系统的lambda方法创建了一个Proc对象,其效果与Proc.new创建出来的是一样的。其实使用lambda与使用Proc.new效果是一样的,只不过lambda是一种标准的方法,其他语言如Python也支持,因此ruby中也支持了。

</div>

您可能想查找下面的文章:

  • Ruby中使用Block、Proc、lambda实现闭包
  • Ruby中的Proc类及Proc的类方法Proc.new的使用解析
  • 详解Ruby中的代码块对象Proc
  • Ruby中proc和lambda的两个区别
  • Ruby中的block、proc、lambda区别总结

相关文章

  • Ruby优化继承类实例
  • Ruby中访问SQL Server数据库的配置实例
  • Ruby元编程小结
  • ruby基本数据类型简明介绍
  • 简单介绍Ruby on Rails对PostgreSQL数组类型的支持
  • ruby 异常处理:rescue
  • Ruby中的变量学习总结
  • rails 连接mysql的问题解决
  • 使用Ruby程序实现web信息抓取的教程
  • Ruby中的方法(函数)学习总结

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • ruby实现的一个异步文件下载HttpServer实例
    • Ruby中的Hash哈希类型基本操作方法小结
    • ruby写扫描当前网页所有url的脚本
    • Ruby实现插入排序算法及进阶的二路插入排序代码示例
    • Ruby中执行Linux shell命令的六种方法详解
    • ruby 迭代器使用方法
    • Ruby中的block代码块学习教程
    • rails常用数据库查询操作、方法浅析
    • Ruby 多线程的潜力和弱点分析
    • Ruby中任务构建工具rake的入门学习教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有