`
Goldice
  • 浏览: 108160 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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


  • 大小: 26.3 KB
分享到:
评论

相关推荐

    学习 Ruby 的笔记以及 Demo.zip

    9. Blocks与Enumerator:Ruby的Enumerator类允许你遍历任何可迭代对象,并且可以与其他数据结构结合,实现复杂的迭代操作。 10. Rails框架:Ruby最有名的应用莫过于Ruby on Rails,这是一个快速开发Web应用的框架,...

    Ruby - Ruby for Rails

    - **模块的作用**:解释模块在 Ruby 中的作用及其与类的区别。 - **混合使用模块**:介绍如何将模块混合到类中,以增强类的功能。 - **命名空间管理**:讲解如何通过模块管理命名空间,避免命名冲突。 - **自包含...

    ruby-2.2.1

    在Ruby-2.2.1中,最重要的更新之一是对浮点数处理的优化。这一版本引入了更快的浮点数运算,使得在处理大量数学计算时,程序运行速度得以提升。此外,还对垃圾回收机制进行了优化,提高了内存管理效率,降低了内存...

    Programming Ruby 1.9 & 2.0 The Pragmatic Programmers’ Guide 4th Edition

    本书包含四个主要部分:Ruby使用的著名教程、对语言的权威性参考、所有内置类、模块和方法的完整文档,以及所有97个标准库的完整描述。Ruby 2.0是对Ruby 1.9的小幅更新。Ruby 2.0的主要语言变化是增加了关键字参数,...

    Ruby程序设计.rar

    5. **元编程**:Ruby的强大之处在于它的元编程能力,允许在运行时修改代码,如定义方法、修改类或模块等。 6. **标准库和Gem**:Ruby的标准库提供了大量内置工具和模块,此外,Ruby的生态系统中还有无数的开源Gem,...

    EnumeratorKit, 在 Objective C 中,ruby 样式枚举.zip

    EnumeratorKit, 在 Objective C 中,ruby 样式枚举 EnumeratorKit - objective-c 中的ruby样式枚举 EnumeratorKit是一个集合枚举库,在 ruby 模块和 Enumerator 类的Enumerable 之后建模。它允许你用一个非常 comp

    enumerator_generate:Enumerator#generate Ruby核心提案演示

    这是 Ruby语言核心建议的替代方法。 目标是相同的:生成枚举器,这些枚举器可以惯用地替换(大部分) while和loop周期。 经过一些实验,结果证明“从初始值开始,然后继续该块”(就像Object#enumerate一样)并不...

    ruby-1.9.3-preview1.zip

    5. **新的内建类和方法**:引入了更多内建类和方法,如 `Enumerator` 类,以及 `String#encode` 用于处理字符编码。 6. **模块的混合(Mixins)**:Ruby 的模块混合机制允许模块的行为被纳入到类中,增加了代码的...

    ruby基础教程(第四版)第14章 字符串类1

    在本章“ruby基础教程(第四版)第14章 字符串类1”中,我们将深入探讨Ruby中的字符串处理方法和特性。 首先,创建字符串在Ruby中有多种方式。你可以使用双引号或单引号,双引号允许内嵌表达式展开,而单引号则不会...

    rubyinstaller-1.9.3-p385

    3. 更丰富的内置类和模块:如新增了`Enumerator`类,使得迭代更加方便;`Hash`类进行了改进,允许使用符号作为键,并提供了块遍历功能。 4. 更严格的语法:例如,未使用的变量现在会引发警告,这有助于避免潜在的...

    j-enum:Enumerable 和 Enumerator 的实现

    在Ruby编程语言中,Enumerable模块和Enumerator类是两个非常核心且强大的工具,它们为处理集合数据提供了丰富的功能。本文将深入探讨这两个概念的实现、用途以及如何在实际编程中运用它们。 首先,Enumerable模块是...

    ruby

    Ruby是一种面向对象的、动态类型的编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年设计并开发。它的设计理念是让编程更加简单、优雅,同时提供...其简洁的语法和强大的特性使得Ruby成为开发者钟爱的语言之一。

    ruby-docs:Ruby 2.0.0p481 文档 http

    Ruby 2.0 还增强了模块和类的行为。`Module#prepend` 方法允许模块的定义在被包含的类或模块的定义之前应用,从而实现方法的前置调用。这种模式在实现装饰器或混入行为时非常有用。同时,`Class#superclass_...

    ruby-style-guide:社区驱动的Ruby编码风格指南

    - 枚举类可以使用`Enumerator`或`enum_for`方法创建,便于迭代。 7. **字符串与符号**: - 使用双引号`"`创建字符串,单引号`'`创建符号化字符串。 - 当可能时,利用字符串连接操作符`+`替代 `%` 模板语法,提高...

    path_generator:用于从结构生成深度优先路径的微型宝石

    它返回一个Enumerator因此您可以调用 Ruby Enumerator类任何方法。 安装 将此行添加到应用程序的 Gemfile 中: gem 'path_generator' 然后执行: $ bundle 或者自己安装: $ gem install path_generator 用法...

    enumerator-parallel:Enumerator 和 Parallel 之间的超级简单包装器

    枚举器::并行 require 'enumerator-parallel'[ 1 , 2 , 3 ] . par ( processes : 3 ) . each { | n | sleep 1 ; p n } 3倍的父亲! 哇哇哇enumerator-parallel保持结果的顺序 (^o^) [ 1 , 2 , 3 ] . par ( threads :...

    ruby-pipeline

    Ruby的`Enumerator::Lazy`类允许我们在处理大量数据时延迟计算,类似于Unix管道的按需处理。它适用于处理无限序列或大数据集,防止一次性加载所有数据到内存: ```ruby infinite_stream = 1.step lazy_squared = ...

    Codewars-Ruby:我对Codewars的Kata的解决方案

    Ruby的枚举器类如`Enumerator`和`Enumerable`提供了迭代数据结构的方法。在解决Kata时,熟练使用这些迭代器可以使代码更简洁。 8. **元编程** Ruby允许在运行时动态修改类和对象,这是其元编程能力的体现。虽然...

    Ruby 迭代器知识汇总

    Ruby的`each`迭代器是最常用的迭代器之一。它允许我们遍历数组或哈希的所有元素,并对每个元素执行指定的代码块。`each`迭代器的语法如下: ```ruby collection.each do |variable| code end ``` 在这个语法结构...

    Text-analyzer:这是Ruby文本分析器

    在编程世界中,数据分析和文本处理是不可或缺的一部分,而Ruby作为一种简洁而强大的脚本语言,经常被用于这类任务。今天我们要探讨的是一个名为“Text-analyzer”的Ruby文本分析器,它为我们提供了一个方便的工具,...

Global site tag (gtag.js) - Google Analytics