Ruby之Enumerator类
今天发现了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类相关推荐
- Ruby中的类与对象(一)
一些约定: 类名首字母大写 方法名首字母小写 end在Ruby中无处不在. 声明类 class BookInStock end 创建类对象 a_book = BookInStock.new anoth ...
- Ruby的Range类
Range在概念上看是非常直观的.不过在实际的使用中,我们可能会遇到一些令人混淆的东西. 看如下代码: digits = 0..9 #0到9 scale1 = 0..10 #0到10 scale2 = ...
- ruby 变量类中范围_Ruby中的类
ruby 变量类中范围 Ruby类 (Ruby Classes) In the actual world, we have many objects which belong to the same ...
- ruby 新建对象_Ruby面向对象编程的简介
ruby 新建对象 by Saul Costa 由Saul Costa Object-oriented programming (OOP) is a programming paradigm orga ...
- Ruby中的设计模式——《松本行弘的程序世界》
< 设计模式 > 一书是用C++ 和 Smalltalk 介绍模式实例的.看了那些例子,大家都会感觉到,绝大多数的模式用 Smalltalk 实现起来非常简单.这是为什么呢? 因为Smal ...
- ruby json转化成对象_系统架构迁移实例:从Ruby到Rust
前几年随着RoR(Ruby on Rails)框架的流行,很多初创企业选择Ruby和Rails作为基础开发框架,构建和快速迭代了其业务系统.但是随着业务规模的不断壮大,性能问题成了一个突出的问题,所以 ...
- 如何检查字符串是否包含Ruby中的子字符串?
我有一个字符串变量,内容如下: varMessage = "hi/thsid/sdfhsjdf/dfjsd/sdjfsdn\n""/my/name/is/balaji.s ...
- [Ruby编程语言].弗拉纳根_松本行弘读书笔记
Ruby is Object-Oriented, Ruby是一门完全的面向对象语言.Ruby里的每个值都是对象 迭代器(iterator)行为类似于循环,包含在花括号中的代码称为代码块(block), ...
- 趁有空,再了解一下GROOVY中关于类的通例
简单的,浅浅的看一下. 想起了RUBY里覆盖类的方法... 在GROOVY里也同样提到了,比如TOSTRING... (其实,在我以前的经验中,从未用过这些东东..:)) 这样用了PACKAGE,显得 ...
最新文章
- 数据产品经理:如何做需求管控?
- ASP.NET 开发小技巧 (持续更新)
- 开发日记-20190505 关键词 汇编语言(四) 自定义分级视图demo
- github密码格式_如何使用GitHub构建一个简单的网页 (不用框架版本)
- 枚举类型是怎样定义的?有什么用途?_新型合金材料——什么是液态金属、液态金属的定义、发展以及用途...
- sm4 的s盒_SM4国密算法Java版
- Spring Boot文件上传
- 垃圾收集算法,垃圾收集器_为什么我不能关闭垃圾收集器?
- asp留言板源码-XYCMS留言板 v8.0
- NetSuite二次开发服务改变中小企业发展困境!
- SpringBoot - 静态资源映射处理
- 字体设计灵感|浓墨重彩!代表“墨”字设计案例
- 手机端主图在哪里设置_原来华为手机灭屏也能看时间,操作方法非常简单,1分钟学会...
- 一个 JS 框架需要做什么
- python plot画图_Python进阶之Matplotlib入门(四)
- 关于PC浏览器js提示兼容问题的代码 “您的浏览器版本太低了,已经和时代脱轨了“ 强制锁定极速模式
- 2015-5-23PDF的下载链接
- web前端学习(十)flex布局
- html内嵌子页面并配合CGI进行页面更新
- 2n 用c语言编程程序,用C语言编写程序.ppt
热门文章
- MXNet中x.grad源码追溯
- Opencv-python 图像处理基础知识
- OpenCV 遇到的问题
- apache安装_Apache+PHP 安装 ---windows
- OpenCV中检测ChArUco的角点(2)
- 【只需4步】windows server系统下快速安装绿色版apache-tomcat-8.0.35(免安装版)
- 在CentOS 6.3 64bit上安装Apache Trafficserver 4.2.3
- Ubuntu 14.04 64位上安装Adobe reader 9.5.5
- C++ 多线程:条件变量 std::condition_variable
- java中decimalFormat格式化数值