首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

Ruby之Enumerator种

2012-10-18 
Ruby之Enumerator类今天发现了Ruby1.8.6和 Ruby1.9.2的一个不同之处,试运行以下代码:?require findputs

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种

热点排行