今天发现了Ruby1.8.6和 Ruby1.9.2的一个不同之处,试运行以下代码:

require 'find'puts Find.find("./data").class 

在Ruby1.9.2中,最后的结果是Enumerator,而在Ruby1.8.6中,结果则是`find': no block given (LocalJumpError)

由此可见Enumerator是Ruby1.9.2中新增的类。

使用ri Enumerator得到的说明是:

Enumerator是 A class which provides a method 'each' to be used  as an Enumerator object.

可以通过下面方法创建Enumerator类:

1. Kernal#to_enum

2. Kernal#enum_for

3. Enumerator.new

大部分iteration方法,如果没有带block,返回一个Enumerator类的对象。

这样就可以解释为什么在Ruby1.8.6中报错而在Ruby1.9.2中可以正常运行的原因了。

由于Enumerator类mixin了Enumerable模块,所以Enumerable模块的方法在Enumerator中都可以使用,这样增加了很多便捷性。

Ruby之Enumerator类相关推荐

  1. Ruby中的类与对象(一)

    一些约定: 类名首字母大写 方法名首字母小写 end在Ruby中无处不在. 声明类 class BookInStock end 创建类对象 a_book = BookInStock.new anoth ...

  2. Ruby的Range类

    Range在概念上看是非常直观的.不过在实际的使用中,我们可能会遇到一些令人混淆的东西. 看如下代码: digits = 0..9 #0到9 scale1 = 0..10 #0到10 scale2 = ...

  3. ruby 变量类中范围_Ruby中的类

    ruby 变量类中范围 Ruby类 (Ruby Classes) In the actual world, we have many objects which belong to the same ...

  4. ruby 新建对象_Ruby面向对象编程的简介

    ruby 新建对象 by Saul Costa 由Saul Costa Object-oriented programming (OOP) is a programming paradigm orga ...

  5. Ruby中的设计模式——《松本行弘的程序世界》

    < 设计模式 > 一书是用C++ 和 Smalltalk 介绍模式实例的.看了那些例子,大家都会感觉到,绝大多数的模式用 Smalltalk 实现起来非常简单.这是为什么呢? 因为Smal ...

  6. ruby json转化成对象_系统架构迁移实例:从Ruby到Rust

    前几年随着RoR(Ruby on Rails)框架的流行,很多初创企业选择Ruby和Rails作为基础开发框架,构建和快速迭代了其业务系统.但是随着业务规模的不断壮大,性能问题成了一个突出的问题,所以 ...

  7. 如何检查字符串是否包含Ruby中的子字符串?

    我有一个字符串变量,内容如下: varMessage = "hi/thsid/sdfhsjdf/dfjsd/sdjfsdn\n""/my/name/is/balaji.s ...

  8. [Ruby编程语言].弗拉纳根_松本行弘读书笔记

    Ruby is Object-Oriented, Ruby是一门完全的面向对象语言.Ruby里的每个值都是对象 迭代器(iterator)行为类似于循环,包含在花括号中的代码称为代码块(block), ...

  9. 趁有空,再了解一下GROOVY中关于类的通例

    简单的,浅浅的看一下. 想起了RUBY里覆盖类的方法... 在GROOVY里也同样提到了,比如TOSTRING... (其实,在我以前的经验中,从未用过这些东东..:)) 这样用了PACKAGE,显得 ...

最新文章

  1. 数据产品经理:如何做需求管控?
  2. ASP.NET 开发小技巧 (持续更新)
  3. 开发日记-20190505 关键词 汇编语言(四) 自定义分级视图demo
  4. github密码格式_如何使用GitHub构建一个简单的网页 (不用框架版本)
  5. 枚举类型是怎样定义的?有什么用途?_新型合金材料——什么是液态金属、液态金属的定义、发展以及用途...
  6. sm4 的s盒_SM4国密算法Java版
  7. Spring Boot文件上传
  8. 垃圾收集算法,垃圾收集器_为什么我不能关闭垃圾收集器?
  9. asp留言板源码-XYCMS留言板 v8.0
  10. NetSuite二次开发服务改变中小企业发展困境!
  11. SpringBoot - 静态资源映射处理
  12. 字体设计灵感|浓墨重彩!代表“墨”字设计案例
  13. 手机端主图在哪里设置_原来华为手机灭屏也能看时间,操作方法非常简单,1分钟学会...
  14. 一个 JS 框架需要做什么
  15. python plot画图_Python进阶之Matplotlib入门(四)
  16. 关于PC浏览器js提示兼容问题的代码 “您的浏览器版本太低了,已经和时代脱轨了“ 强制锁定极速模式
  17. 2015-5-23PDF的下载链接
  18. web前端学习(十)flex布局
  19. html内嵌子页面并配合CGI进行页面更新
  20. 2n 用c语言编程程序,用C语言编写程序.ppt

热门文章

  1. MXNet中x.grad源码追溯
  2. Opencv-python 图像处理基础知识
  3. OpenCV 遇到的问题
  4. apache安装_Apache+PHP 安装 ---windows
  5. OpenCV中检测ChArUco的角点(2)
  6. 【只需4步】windows server系统下快速安装绿色版apache-tomcat-8.0.35(免安装版)
  7. 在CentOS 6.3 64bit上安装Apache Trafficserver 4.2.3
  8. Ubuntu 14.04 64位上安装Adobe reader 9.5.5
  9. C++ 多线程:条件变量 std::condition_variable
  10. java中decimalFormat格式化数值