Ruby之Enumerator类 _Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Ruby之Enumerator类

Ruby之Enumerator类

 2011/9/29 8:03:58  Goldice  http://jdoc.iteye.com  我要评论(0)
  • 摘要:今天发现了Ruby1.8.6和Ruby1.9.2的一个不同之处,试运行以下代码:require'find'putsFind.find("./data").class在Ruby1.9.2中,最后的结果是Enumerator,而在Ruby1.8.6中,结果则是`find':noblockgiven(LocalJumpError)由此可见Enumerator是Ruby1.9.2中新增的类。使用riEnumerator得到的说明是
  • 标签:

今天发现了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中都可以使用,这样增加了很多便捷性。


  • 大小: 26.3 KB
  • 查看图片附件
  • 相关文章
发表评论
用户名: 匿名