`
hideto
  • 浏览: 2679262 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Enumerable模块的常用方法

    博客分类:
  • Ruby
阅读更多

enum.collect {| obj | block} => array
enum.map {| obj | block} => array

Returns a new array with the results of running block once for every element in enum.
(1..4).collect {|i| i*i }   #=> [1, 4, 9, 16]
(1..4).collect { "cat"  }   #=> ["cat", "cat", "cat", "cat"]



enum.detect(ifnone = nil) {| obj | block } => obj or nil
enum.find(ifnone = nil) {| obj | block } => obj or nil

Passes each entry in enum to block. Returns the first for which block is not false. If no object matches, calls ifnone and returns its result when it is specified, or returns nil.
(1..10).detect  {|i| i % 5 == 0 and i % 7 == 0 }   #=> nil
(1..100).detect {|i| i % 5 == 0 and i % 7 == 0 }   #=> 35



enum.inject(initial) {| memo, obj | block } => obj
enum.inject {| memo, obj | block } => obj

Combines the elements of enum by applying the block to an accumulator value (memo) and each element in turn. At each step, memo is set to the value returned by the block. The first form lets you supply an initial value for memo. The second form uses the first element of the collection as a the initial value (and skips that element while iterating).
# Sum some numbers
(5..10).inject {|sum, n| sum + n }              #=> 45
# Multiply some numbers
(5..10).inject(1) {|product, n| product * n }   #=> 151200

# find the longest word
longest = %w{ cat sheep bear }.inject do |memo,word|
   memo.length > word.length ? memo : word
end
longest                                         #=> "sheep"

# find the length of the longest word
longest = %w{ cat sheep bear }.inject(0) do |memo,word|
   memo >= word.length ? memo : word.length
end
longest                                         #=> 5



enum.find_all {| obj | block } => array
enum.select {| obj | block } => array

Returns an array containing all elements of enum for which block is not false.
(1..10).find_all {|i|  i % 3 == 0 }   #=> [3, 6, 9]



enum.reject {| obj | block } => array

Returns an array for all elements of enum for which block is false.
(1..10).reject {|i|  i % 3 == 0 }   #=> [1, 2, 4, 5, 7, 8, 10]
分享到:
评论

相关推荐

    Enumerable-Methods:这是Microverse中Ruby模块的项目#2

    如果您对上述方法之一有任何疑问,请考虑检查文件。 现场演示 这是该项目中所有方法的。 建于 Ruby Visual Studio,Git和GitHub 入门 先决条件 要运行此项目,您需要一台装有Ruby的计​​算机。 如果您不确定如何...

    Advanced_ruby_building_blocks_Projects

    项目1:气泡排序排序算法是《计算机科学》中最常用的最早的...项目2:可数方法您了解了将Enumerable模块混入Array和Hash类(以及其他类)并为您提供了许多方便的迭代器方法。 为了证明它没有魔力,您将重建那些方法。

    Enumerables_project

    在Ruby编程语言中,Enumerable模块是一个非常重要的工具,它提供了许多方法来处理集合,如数组、哈希等。"Enumerables_project"很可能是一个练习或项目,旨在深入理解并实践Enumerable模块的各种方法。在这个项目中...

    Ruby经典学习教程(口碑不错)

    - `ObjectSpace`模块提供了管理对象空间的方法。 **12.2 察看类和对象的状态** - 可以获取当前程序中的所有对象信息。 **12.3 动态方法调用** - 通过`send`、`Method`类、`UnboundMethod`类或`eval`方法实现动态...

    Ruby on Rails 指南 v5.0.1 中文版

    - **Enumerable的扩展**:解释Enumerable模块的扩展方法。 - **Array的扩展**:列举Array类被扩展后的新方法。 - **Hash的扩展**:展示Hash类的扩展方法。 - **Regexp的扩展**:说明Regexp类的扩展方法。 - **Range...

    ruby语法基础教程.pdf

    - **使用mixin:** Ruby中的`Comparable`、`Enumerable`等模块常用作mixin。 #### 九、异常 - **异常处理:** 使用`begin...rescue...ensure`结构来捕获和处理异常。 - **定义异常类:** 可以自定义异常类来抛出...

    javascript面向对象编程(中文)

    在JavaScript中,可以通过设置对象属性为非枚举(non-enumerable)来实现某种程度的数据隐藏。 6. **继承**:JavaScript提供了多种继承方式,如原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生...

    C#常用的42个类

    C#类是面向对象编程的基础,它们提供了封装、继承和多态等特性,使得代码更加模块化和可复用。下面将详细介绍C#中42个常用的类,以及它们在实际开发中的应用。 1. `System.Object`:所有C#类的基类,包含一些基本的...

    prototype1.4及文档

    4. **实用工具**:如`Hash`对象用于处理哈希表,`Enumerable`模块提供了集合操作的通用方法,如`map`、`grep`等。 ### 三、使用Prototype 1.4开发AJAX应用 在Prototype 1.4中,使用AJAX的主要步骤包括: 1. **...

    ruby-3.0.2.tar.gz

    例如,`Enumerable`模块可能有新的方法添加,或者现有方法的性能得到优化。3.0.2同样可能对常用库如`JSON`、`Net::HTTP`等进行了更新。 6. 兼容性和稳定性:Ruby 3.0.2会关注与其他库和框架的兼容性,确保与先前...

    ruby_1_9_3_stdlib

    2. **Enumerable**:这个模块是许多集合类(如 Array 和 Hash)的基础,提供了诸如 `each`, `map`, `select`, `reduce` 等迭代方法,使得数据处理更加简洁高效。 3. **String**:Ruby 的字符串类提供了大量的方法,...

    ruby标准库

    - `Enumerable`:提供了一组用于遍历和查询集合的有用方法,如`each`, `select`, `map`, `reduce`等。 - `Time`和`Date`:处理日期和时间,进行比较、格式化等操作。 - `Math`:数学运算,包括平方根、指数、对数...

    RUBY基础入门指南

    - **Enumerable**:实现常用的迭代方法。 - **Singleton**:确保类只能有一个实例。 **8.4 Require, load和include** - `require`:加载并执行指定文件。 - `load`:加载文件,不会缓存。 - `include`:将模块混入...

    ruby trap 初学者使用

    - `Enumerable`模块提供了大量实用的迭代方法,初学者应熟练掌握。 8. **代码风格和约定**: - 遵循Ruby社区广泛接受的编码规范,如Ruby Style Guide,有助于写出更易读、易维护的代码。 9. **闭包和上下文**: ...

    Ruby程序设计(简洁清新的教程)

    Ruby有一些特殊的类和方法,如`Object`类是所有类的基类,`Kernel`类包含常用的基本函数。 **3.5 类变量与类方法** 类变量以`@@`开头,可在所有实例间共享;类方法则使用`self`关键字定义: ```ruby class ...

    Ruby语言教程和经典案例

    块是Ruby中一种特殊的匿名代码块,可以作为参数传递给方法,并且经常与Enumerable类的方法一起使用。例如: ```ruby [1, 2, 3].each do |num| puts num end ``` #### Ruby经典案例 Ruby不仅是一门强大的编程语言...

    Utility常用函数

    在IT行业中,"Utility"通常指的是工具类或者通用功能模块,它们包含了一系列可复用的函数,用于解决常见的编程问题。这些函数可以帮助开发者提高代码的效率和可维护性,减少重复工作。以下是对"Utility 常用函数"的...

    难题:难题编程问题

    4. **Ruby标准库和Gem**:Ruby拥有丰富的标准库,如Enumerable模块提供了很多实用的方法,如map、reduce、filter等,而Gem如Nokogiri用于XML/HTML解析,JSON用于处理JSON数据,这些都能在解题中发挥作用。...

    Javascript-OOJS:Javascript 中的面向对象编程

    OOP允许我们通过创建对象来封装数据和方法,实现代码的重用性和模块化。 1. **面向对象的三大特性** - 封装:隐藏内部实现细节,对外提供公共接口。在JavaScript中,我们可以通过构造函数和原型来创建对象,以及...

Global site tag (gtag.js) - Google Analytics