迭代器是用于面向?qū)ο笳Z(yǔ)言的概念。迭代就像循環(huán)一樣多次做同一件事情。
循環(huán)方法是最簡(jiǎn)單的迭代器。它們一個(gè)接一個(gè)地從集合中返回所有的元素。數(shù)組和哈希也是一個(gè)集合。
Ruby each迭代器是從哈?;驍?shù)組返回所有的元素。
語(yǔ)法
(collection).each do |variable|
code...
end
這里的集合(collection)可以是任何數(shù)組,范圍或散列。
示例
#!/usr/bin/ruby
# file : iterator-each.rb
(1...5).each do |i|
puts i
end
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby iterator-each.rb
1
2
3
4
F:\worksp\ruby>
循環(huán)由times迭代器執(zhí)行指定的次數(shù)。 循環(huán)將從零開(kāi)始,并直到所有小于指定的數(shù)字的值。
語(yǔ)法
x.times do |variable|
code...
end
在這里,在x位置的值,我們需要定義具體數(shù)字來(lái)迭代循環(huán)。
示例
#!/usr/bin/ruby
# file : iterator-times.rb
5.times do |n|
puts n
end
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby iterator-times.rb
0
1
2
3
4
F:\worksp\ruby>
Ruby upto迭代器執(zhí)行從數(shù)字x到數(shù)字y的迭代。
語(yǔ)法
x.upto(y) do |variable|
code
end
這里的集合(collection)可以是任何數(shù)組,范圍或散列。
示例
#!/usr/bin/ruby
# file : iterator-upto.rb
1.upto(5) do |n|
puts n
end
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby iterator-upto.rb
1
2
3
4
5
F:\worksp\ruby>
Ruby step迭代器用于在跳過(guò)范圍時(shí)迭代。
語(yǔ)法
(controller).step(x) do |variable|
code
end
這里,x是迭代時(shí)將被跳過(guò)的范圍。
示例
#!/usr/bin/ruby
# file : iterator-step.rb
(10..50).step(5) do |n|
puts n
end
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby iterator-step.rb
10
15
20
25
30
35
40
45
50
F:\worksp\ruby>
each_line迭代器用于迭代字符串中的行。
示例
#!/usr/bin/ruby
# file : iterator-each_line.rb
"All\nthe\nwords\nare\nprinted\nin\na\nnew\line.".each_line do |line|
puts line
end
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby iterator-each_line.rb
All
the
words
are
printed
in
a
newline.
F:\worksp\ruby>