红宝石 |迭代器的类型
迭代这个词意味着多次做一件事,这就是迭代器所做的。有时迭代器被称为自定义循环。
- “迭代器”是 Ruby 中的面向对象概念。
- 更简单地说,迭代器是集合(数组、哈希等)支持的方法。集合是存储一组数据成员的对象。
- Ruby 迭代器一个接一个地返回集合中的所有元素。
- Ruby 迭代器是“可链接的”,即在彼此之上添加功能。
Ruby 中有很多迭代器,如下所示:
- 每个迭代器
- 收集迭代器
- 时间迭代器
- Upto 迭代器
- 向下迭代器
- 步进迭代器
- Each_Line 迭代器
- 每个迭代器:此迭代器返回数组或散列的所有元素。每个迭代器一个一个地返回每个值。
句法:
- 每个迭代器:此迭代器返回数组或散列的所有元素。每个迭代器一个一个地返回每个值。
collection.each do |variable_name|
# code to be iterate
end
- 在上述语法中,集合可以是范围、数组或散列。
例子:
Ruby
# 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
Ruby
# 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
Ruby
# 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
Ruby
# 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
Ruby
# 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
Ruby
# 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
Ruby
# 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
- 输出:
0
1
2
3
4
5
6
7
8
9
G
e
e
k
s
- 收集迭代器:此迭代器返回集合的所有元素。 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 Iterator:在这个迭代器中,一个循环被植入了特定的时间。循环最初从零开始,一直运行到小于指定数字的一。
这可以在没有迭代变量的情况下使用。我们可以通过使用标识符周围的垂直条来添加迭代变量。
句法:
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 Iterator:这个迭代器遵循从上到下的方法。它包括迭代中的顶部和底部变量。
句法:
top.upto(bottom) do |variable_name|
# code to execute
end
- 这里迭代从top开始并在bottom结束。重要的一点要记住,底部变量的值总是大于顶部变量,如果不是,那么它将什么也不返回。
例子:
红宝石
# 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 Iterator:这个迭代器遵循自下而上的方法。它包括迭代中的顶部和底部变量。
句法:
top.downto(bottom) do |variable_name|
# code to execute
end
- 这里迭代从底部开始,到顶部结束。重要的一点要记住,底部变量的值总是小于顶部变量,如果不是,那么它将不返回任何内容。
例子:
红宝石
# 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
- 步进迭代器: 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