`

Ruby之map、each、collect、map!、collect!揭秘

    博客分类:
  • ROR
阅读更多
def map_method
  arr1 = ["name2","class2"]
  arr2 = arr1.map {|num| num + "and"}
  print "map............",arr2,"\n"
end

def each_method
  arr1 = ["name2","class2"]
  arr2 = arr1.each {|num| num + "and"}
  print "each............",arr2,"\n"
end

def collect_method
  arr1 = ["name2","class2"]
  arr2 = arr1.collect {|num| num + "and"}
  print "collect............",arr2,"\n"
end

def map1_method
  arr1 = ["name2","class2"]
  arr2 = arr1.map! {|num| num + "and"}
  print "map!............",arr2,"\n"
end

def collect1_method
  arr1 = ["name2","class2"]
  arr2 = arr1.collect! {|num| num + "and"}
  print "collect!............",arr2,"\n"
end

def test
  map_method
  each_method
  collect_method
  map1_method
  collect1_method
end

test


result:
map............["name2and", "class2and"]
each............["name2", "class2"]
collect............["name2and", "class2and"]
map!............["name2and", "class2and"]
collect!............["name2and", "class2and"]

为了更明了的了解each的用法,看下面的例子:
def each_deep_method
  arr_test = [1,2,3]
  arr_result = arr_test.each do |num|
    num = num + 1
    p num
  end
  arr_result
end

result:
2
3
4
=> [1, 2, 3]
可见each_deep_method的返回值arr_result是和arr_test相等的。
[总结]
(1)each只是遍历数组的每个元素,并不生成新的数组;
(2)map和collect相同用法,遍历每个元素,用处理之后的元素组成新的数组,并将新数组返回;
(3)map!同collect!
其中map和map!、collect和collect!的区别就不用纠结了吧,实在纠结就看下面的例子:
def map_deep_method
  arr_test = [1,2,3]
  arr_test.map do |num|
    num += 1
  end
  arr_test  #[1, 2, 3]
end

def map1_deep_method
  arr_test = [1,2,3]
  arr_test.map! do |num|
    num += 2 
  end
  arr_test  #[3, 4, 5]
end
分享到:
评论

相关推荐

    Ruby中使用each和collect进行迭代的用法

    ### Ruby中使用each和collect进行迭代的用法 在Ruby编程语言中,迭代是一种非常重要的概念,用于遍历数组、哈希等集合类型中的元素。本文将深入介绍`each`和`collect`这两个常用方法的基本原理及其应用方式,并通过...

    ruby 标准库

    ### Ruby标准库详解 #### 一、Array 类 在Ruby的标准库中,`Array`类提供了丰富的实例方法和类方法来处理数组。 ##### 1.1 Class methods **1.1.1 []** 用于创建一个新的数组。例如: ```ruby arr = [1, 2, 3]...

    map:您一直想要的ruby容器:有序的字符串符号无关紧要的哈希

    9. **迭代器**:`Map`也支持Ruby的各种迭代器,如`select`、`reject`、`collect`等,这些方法可以在遍历过程中根据条件筛选、转换或过滤元素。 10. **自定义比较**:`Map`可以使用`==`操作符与其他`Map`或哈希进行...

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

    `Enumerator` 模块提供了一套灵活的方法,使得可以在不提供块的情况下对这些方法进行后续操作,如 `collect` 和 `map`。 最后,Ruby提供了清理字符串开头和结尾空格的方法,如 `strip`;转换字符大小写的方法,如 `...

    Ruby 迭代器知识汇总

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

    programming ruby

    `, `collect`, `detect`, `each_with_index`, `entries`, `find`, `find_all`, `grep`, `include?`, `inject`, `map`, `max`, `member?`, `min`, `partition`, `reject`, `select`, `sort`, `sort_by`, `to_a`, `zip...

    简要说明Ruby中的迭代器

    总结来说,Ruby中的迭代器如`each`和`collect`提供了遍历和操作集合的强大工具。`each`用于简单的逐个处理元素,而`collect`则允许你对集合进行转换,生成新的集合。这些概念在动态语言中极其重要,是编写高效、...

    Ruby基础知识之基本流程控制

    a3 = a2.collect { |x| x + 1 } # 同上,collect和map相同 print a2, a3 # 奇偶数筛选 a5 = a1.select { |x| x % 2 == 0 } # 选择偶数 print a5 a6 = a1.reject { |x| x % 2 == 0 } # 选择非偶数 print a6 # ...

    enumerables:实现Ruby可枚举方法

    Ruby的Enumerable模块包含了一系列迭代方法,如each、map、select、inject等,它们允许我们对集合进行遍历、筛选、转换等操作。这些方法的核心在于它们定义了一种模式,使得我们能够以一致的方式处理各种类型的集合...

    举例讲解Ruby中迭代器Iterator的用法

    3. `collect`(也称为`map`):它将集合中的每个元素传递给Block,并使用Block的返回值构建一个新的数组。 ```ruby ["H", "A", "L"].collect { |x| x.succ } # 对每个元素调用 succ 方法并返回新数组,这里是 ["I...

    groovy快速入门指南(中文)

    ### Groovy 快速入门指南知识点...Groovy 的强大之处在于它的简洁性和灵活性,这些特性使得 Groovy 成为一种非常易于学习和使用的编程语言。通过掌握这些基础知识,您可以迅速地使用 Groovy 开发出高效、可靠的软件。

    Groovy+quick+start.pdf

    此外,Groovy 中的集合支持多种内置方法,如 `each`、`collect`、`find`、`findAll`、`inject`、`every`、`any`、`min`、`max` 和 `join` 等,极大地简化了数据处理的过程。掌握这些方法对于使用 Groovy 进行高效...

    underscoreAPI文档(英文版pdf)

    - **map/collect** - **功能描述**:通过将列表中的每个元素通过转换函数(`iterator`)映射为新值,生成一个新的数组。 - **参数**: - `list`:要映射的列表。 - `iterator`:每次迭代调用的函数。 - **示例*...

    underscore1.5.2中文帮助

    - **map**:通过一个转换函数创建一个新数组,别名为`collect`。 - **reduce**:将集合中的元素归结为单一值,也称为`inject`或`foldl`。 - **reduceRight**:与`reduce`类似,但是从右向左归结元素,别名为`...

    Groovy_快速入门.doc

    在Groovy中,可以使用闭包来模拟Python和Ruby中的`yield`功能,即创建迭代器。 ```groovy class Foo { static void main(String[] args) { Foo foo = new Foo() for (x in foo.myGenerator) { print("${x}-") ...

    中科院高级软件工程期末题库

    ### Ruby 迭代器:each 和 collect **each**:是最常用的迭代器之一,用于遍历数组或哈希等集合。 **collect**:也称为`map`,用于遍历集合并返回一个新的数组,新数组中的元素是原数组中元素经过指定操作后的结果...

    prototype1.4中文手册

    `, `invoke`, `collect`, `map`, `inject`, `reduce`, `max`, `min`, `without`, `uniq`, `reverse`, `sort`, `zip`, `toArray`, `clone`, `inspect` 等。这些方法极大地提高了数组操作的灵活性和易用性。 #### 五...

Global site tag (gtag.js) - Google Analytics