Ruby 迭代器的类型
迭代这个词意味着多次做一件事,这就是 迭代器的作用。有时,迭代器被称为自定义循环。
- “迭代器 “是Ruby中面向对象的概念。
- 用更简单的话来说,迭代器是 由集合(Arrays, Hashes等)支持的方法。集合是存储一组数据成员的对象。
- Ruby 迭代器一个接一个地返回一个集合中的所有元素。
- Ruby迭代器是 “可链式 “的,即在彼此的基础上增加功能。
在Ruby中,有许多迭代器,如下 所示:
- Each迭代器
- Collect迭代器
- Times迭代器
- Upto迭代器
- downto迭代器
- step迭代器
- Each_Line 迭代器
- Each 迭代器: 这种迭代器返回数组或哈希的所有元素。每个迭代器逐一返回每个值。
语法:
collection.each do |variable_name|
# code to be iterate
end
在上述语法中,集合可以是范围、数组或哈希。
例子:
# Ruby program to illustrate each iterator
#!/usr/bin/ruby
# using each iterator
# here collection is range
# variable name is i
(0..9).each do |i|
# statement to be executed
puts i
end
a = ['G', 'e', 'e', 'k', 's']
puts "\n"
# using each iterator
# here collection is an array
a.each do|arr|
# statement to be executed
puts arr
end
输出:
0
1
2
3
4
5
6
7
8
9
G
e
e
k
s
- Collect 迭代器: 这个迭代器返回一个集合的所有元素。collect 迭代器返回整个集合,不管它是数组还是哈希。
语法:
Collection = collection.collect
collect方法不需要总是与一个块相关联。collect方法返回整个集合,不管它是一个数组还是一个哈希值。
例子:
# Ruby program to illustrate the collect iterator
#!/usr/bin/ruby
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# using collect iterator
# printing table of 5
b = a.collect{ |y| (5 * y) }
puts b
输出:
5
10
15
20
25
30
35
40
45
50
- Times迭代器: 在这个迭代器中,一个循环被植入了特定的时间数。循环最初从零开始,一直运行到比指定数字少的那一个。
这可以在没有迭代变量时使用。我们可以通过使用标识符周围的竖条来添加一个迭代变量。
语法:
t.times do |variable_name|
# code to be execute
end
这里 t 是指定的数字,用来定义迭代次数。
示例:
# Ruby program to illustrate time iterator
#!/usr/bin/ruby
# using times iterator by providing
# 7 as the iterate value
7.times do |i|
puts i
end
输出:
0
1
2
3
4
5
6
- Upto 迭代器: 该迭代器采用从上到下的方法。它在迭代中包括顶部和底部变量。
语法:
top.upto(bottom) do |variable_name|
# code to execute
end
这里的迭代从顶部开始,在底部结束。需要记住的是, 底层变量的值总是 大于顶层变量的值,如果不是这样,那么它将什么也不返回。
例子:
# Ruby program to illustrate the upto iterator
#!/usr/bin/ruby
# using upto iterator
# here top value is 4
# bottom value is 7
4.upto(7) do |n|
puts n
end
# here top > bottom
# so no output
7.upto(4) do |n|
puts n
end
输出:
4
5
6
7
- downto迭代器: 该迭代器采用从下到上的方法。它包括迭代中的顶部和底部变量。
语法:
top.downto(bottom) do |variable_name|
# code to execute
end
这里的迭代从bottom开始,在顶部结束。需要记住的一点是, 底层变量的值总是小于顶层变量的值,如果不是这样,那么它将什么也不返回。
例子:
# Ruby program to illustrate the downto iterator
#!/usr/bin/ruby
# using downto iterator
# here top value is 7
# bottom value is 4
7.downto(4) do |n|
puts n
end
# here top < bottom
# so no output
4.downto(7) do |n|
puts n
end
输出:
7
6
5
4
- step迭代器: Ruby步骤迭代器用于迭代用户必须跳过的指定范围。
语法:
Collection.step(rng) do |variable_name|
# code to be executed
end
这里rng是整个迭代操作将被跳过的范围。
例子:
# Ruby program to illustrate step iterator
#!/usr/bin/ruby
# using step iterator
# skipping value is 10
# (0..60 ) is the range
(0..60).step(10) do|i|
puts i
end
输出:
0
10
20
30
40
50
60
- Each_line 迭代器: Ruby each_line 迭代器用于迭代字符串中的一个新行。
语法:
string.each_line do |variable_name|
# code to be executed
end
例如:
# Ruby program to illustrate Each_line iterator
#!/usr/bin/ruby
# using each_line iterator
"Welcome\nto\nGeeksForGeeks\nPortal".each_line do|i|
puts i
end
输出:
Welcome
to
GeeksForGeeks
Portal