Ruby 迭代器知识汇总

 更新时间:2020年06月28日 14:17:40   作者:菜鸟教程  
这篇文章主要介绍了Ruby 迭代器的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下

简单来说:迭代(iterate)指的是重复做相同的事,所以迭代器(iterator)就是用来重复多次相同的事。

迭代器是集合支持的方法。存储一组数据成员的对象称为集合。在 Ruby 中,数组(Array)和哈希(Hash)可以称之为集合。

迭代器返回集合的所有元素,一个接着一个。在这里我们将讨论两种迭代器,each 和 collect。

Ruby each 迭代器

each 迭代器返回数组或哈希的所有元素。

语法

collection.each do |variable|
  code
end

为集合中的每个元素执行 code。在这里,集合可以是数组或哈希。

#!/usr/bin/ruby
 
ary = [1,2,3,4,5]
ary.each do |i|
  puts i
end

以上实例运行输出结果为:

1
2
3
4
5

each 迭代器总是与一个块关联。它向块返回数组的每个值,一个接着一个。值被存储在变量 i 中,然后显示在屏幕上。

Ruby collect 迭代器

collect 迭代器返回集合的所有元素。

语法

collection = collection.collect

collect 方法不需要总是与一个块关联。collect 方法返回整个集合,不管它是数组或者是哈希。

实例

#!/usr/bin/ruby
 
a = [1,2,3,4,5]
b = Array.new
b = a.collect{ |x|x }
puts b

以上实例运行输出结果为:

1
2
3
4
5

注意:collect 方法不是数组间进行复制的正确方式。这里有另一个称为 clone 的方法,用于复制一个数组到另一个数组。

当您想要对每个值进行一些操作以便获得新的数组时,您通常使用 collect 方法。例如,下面的代码会生成一个数组,其值是 a 中每个值的 10 倍。

#!/usr/bin/ruby
 
a = [1,2,3,4,5]
b = a.collect{|x| 10*x}
puts b

以上实例运行输出结果为:

10
20
30
40
50

补充

Java需要把Map转化成List类型的容器才能使用迭代器,但Ruby有直接针对Map的迭代器:

sum = 0
cutcome = {"block1" => 1000, "book2" => 1000, "book3" => 4000}
cutcome.each{|item, price| sum += price}
print "sum = " + sum.to_s

甚至还可以这样:

sum = 0
cutcome = {"block1" => 1000, "book2" => 1000, "book3" => 4000}
cutcome.each{|pair| sum += pair[1]}
print "sum = " + sum.to_s

以上就是Ruby 迭代器知识汇总的详细内容,更多关于Ruby 迭代器的资料请关注脚本之家其它相关文章!

相关文章

  • Ruby 多线程的潜力和弱点分析

    Ruby 多线程的潜力和弱点分析

    这篇文章主要介绍了Ruby 多线程的潜力和弱点分析,本文讲解了Ruby 多线程和 IO Block、Ruby GIL 的影响、JRuby 去除了 GIL、Ruby 多线程总结等内容,需要的朋友可以参考下
    2015-03-03
  • ruby 异常处理:rescue

    ruby 异常处理:rescue

    ruby 异常处理:rescue...
    2007-11-11
  • CentOS 7下配置Ruby语言开发环境的方法教程

    CentOS 7下配置Ruby语言开发环境的方法教程

    对于新入门的开发者,如何安装 Ruby, Ruby Gems 和 Rails 的运行环境可能会是个问题,下面这篇文章主要给大家分享了在CentOS 7下配置Ruby语言开发环境的方法教程,文中介绍的非常详细,需要的朋友们下面来一起看看吧。
    2017-05-05
  • 什么是ruby和Ruby概述

    什么是ruby和Ruby概述

    什么是ruby和Ruby概述...
    2007-11-11
  • Ruby3多线程并行Ractor使用方法详解

    Ruby3多线程并行Ractor使用方法详解

    这篇文章主要介绍了Ruby3多线程并行Ractor使用方法详解,Ruby3之前使用Thread来创建新线,Ruby3通过Ractor支持真正的多线程并行,多个Ractor之间可并行独立运行程,需要的朋友可以参考下
    2022-04-04
  • 实例解析Ruby程序中调用REXML来解析XML格式数据的用法

    实例解析Ruby程序中调用REXML来解析XML格式数据的用法

    这篇文章主要介绍了Ruby程序中调用REXML来解析XML格式数据的用法,文中用实例分三个步骤讲解了REXML解析XML的过程,需要的朋友可以参考下
    2016-04-04
  • Ruby常用文件操作方法

    Ruby常用文件操作方法

    这篇文章主要介绍了Ruby常用文件操作方法,本文讲解了新建文件、读取文件、删除、重命名文件、目录操作等常用文件操作方法,需要的朋友可以参考下
    2015-05-05
  • Ruby中执行Linux shell命令的六种方法详解

    Ruby中执行Linux shell命令的六种方法详解

    这篇文章主要介绍了Ruby中执行Linux shell命令的六种方法详解,这些方法包括exec、system、反引号、IO、Open3、Open4等命令,需要的朋友可以参考下
    2015-01-01
  • ruby实现的文件自删除代码分享

    ruby实现的文件自删除代码分享

    这篇文章主要介绍了ruby自删除代码分享,本文代码适用Linux系统,Windows系统需要自测一下哈,需要的朋友可以参考下
    2015-01-01
  • ruby的程序结构介绍

    ruby的程序结构介绍

    这篇文章主要介绍了ruby的程序结构介绍,本文讲解了源文件、模块、控制结构、方法定义、类及对象等内容,需要的朋友可以参考下
    2015-05-05

最新评论