当前位置: 首页 > 编程笔记 >

Ruby 迭代器知识汇总

冯祺
2023-03-14
本文向大家介绍Ruby 迭代器知识汇总,包括了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 each 迭代器,语法,实例,Ruby collect 迭代器,语法,实例,实例简单来说:迭代(iterate)指的是重复做相同的事,所以迭代器(iterator)就是用来重复多次相同的事。 迭代器是集合支持的方法。存储一组数据成员的对象称为集合。在 Ruby 中,数组(Array)和哈希(Hash)可以称之为集合。 迭代器返回集合的所有元素,一个接着一个。在这里我们将讨论两种迭代器,each 和 collect。 Ruby each 迭代器 each 迭代器返回数组或哈希的

  • 迭代意味着像循环一样多次执行一次事情,它一个接一个返回数组或哈希里面的元素,本章中会为大家介绍 Ruby 都有哪些迭代器。 1. each Ruby 的每个迭代器都从哈希和数组中返回每个元素,最常见的是 each 迭代器。 下面是一个数组的例子。 实例: [1, 2, 3, 4, 5].each do |number| puts number end # ---- 输出结果 ---- 1 2

  • 本文向大家介绍Linux shell知识点汇总,包括了Linux shell知识点汇总的使用技巧和注意事项,需要的朋友参考一下 实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写

  • 本文向大家介绍JSON相关知识汇总,包括了JSON相关知识汇总的使用技巧和注意事项,需要的朋友参考一下 JSON:JavaScript 对象表示法(JavaScript Object Notation) JSON 语法规则   数据在名称/值对中   数据由逗号分隔   花括号保存对象   方括号保存数组 JSON有6种类型的值:   对象、数组、字符串、数字、布尔值、null JSON对象是一个

  • 本文向大家介绍Ruby基础知识之方法、代码段,包括了Ruby基础知识之方法、代码段的使用技巧和注意事项,需要的朋友参考一下 Ruby中的方法是一个有名称的代码块,是与一个或多个对象关联的参数化的代码。调用时须给出方法名,接收者(所在对象),参数值,且最后一个表达式的值做为返回值。与Ruby方法相似的是代码块,它没有名字,且调用时只通过迭代器或被间接调用。   (一)方法 (1)定义方法 定义方法就

  • 本文向大家介绍c++迭代器失效的情况汇总,包括了c++迭代器失效的情况汇总的使用技巧和注意事项,需要的朋友参考一下 一、序列式容器(数组式容器) 对于序列式容器(如vector,deque),序列式容器就是数组式容器,删除当前的iterator会使后面所有元素的iterator都失效。这是因为vetor,deque使用了连续分配的内存,删除一个元素导致后面所有的元素会向前移动一个位置。所以不能使用

  • 本文向大家介绍Node.js 的模块知识汇总,包括了Node.js 的模块知识汇总的使用技巧和注意事项,需要的朋友参考一下 在写 Node.js 应用程序的时候,你确实可以把所有代码放在巨大原 index.js 文件中,不在乎你的应用程序会变得多大多复杂。Node.js 解释器不会在意这个事情。但在代码组织方面,你很快就会陷入混乱,不能理解代码,而且难以调试。所以,作为一个人,你应该关心代码的结构

  • 本文向大家介绍Java内部类知识汇总,包括了Java内部类知识汇总的使用技巧和注意事项,需要的朋友参考一下 Java内部类 一、 含义   在Java编程语言里,程序是由类(class)构建而成的。在一个类的内部也可以声明类,我们把这样的类叫做内部类。 二、 作用 •实现了更好的封装,我们知道,普通类(非内部类)的访问修饰符不能为private或protected,而内部类可以。当我们将内部类声明