Ruby

• Know About Different Blocks in Ruby • Know More About Different Modules in Ruby • Know About Exceptions in Ruby • Know More About Different Methods in Ruby • Know About Ruby Class • Know About Ruby File I/O • Know More About Different Iterators in Ruby • Know About Control Structures in Ruby • Know About Hashes in Ruby • Know About Different Arrays in Ruby • Know More About Operators in Ruby • Know About Various Datatypes/Literals in Ruby • Know About Variables in Ruby | Learning Hub • Know More About Installation of Ruby on rails (using rbenv) • Know More About Ruby

10 lessons

Lessons

7 of 10

Know More About Different Iterators in Ruby

Iterators are a feature in Ruby that help you loop through data collections. In this topic, you'll learn about the different types of iterators, and how to use them.


There are different kinds of iterators provided by ruby a few of them are

Each Iterator

The each iterator is used to iterate through the elements of the array.

arr = [1, 2, 3, 4, 5]
arr.each { |a| print a -= 10, " " }
# prints: -9 -8 -7 -6 -5

The reverse each iterator, iterates through the list in reverse order.

words = %w[first second third fourth fifth sixth]
str = ""
words.reverse_each { |word| str += "#{word} " }
p str #=> "sixth fifth fourth third second first "

each_with_indexiterate over the elements in the array along with index.

arr = [1, 2, 3, 4, 5]
arr.each_with_index { |val,index| puts "index: #{index},value:#{val}"}
#output
index:0,value:1
index:1,value:2
index:2,value:3
index:3,value:4
index:4,value:5

Each Iterator can also be used with Hashes

h = { "a" => 100, "b" => 200 }
h.each {|key, value| puts "#{key} is #{value}" }
#output
a is 100
b is 200

h.each_key {|key| puts key }
#output
a
b

h.each_value {|value| puts value }
#output
100
200

Times Iterator

This iterator is used to iterate through the array from 0 to n-1 index positio

5.times do |i|
print i, " "
end
#OUTPUT
#=> 0 1 2 3 4

Upto and Downto Iterators

This iterator is used to iterate from value of n to the limit(including limit)

5.upto(10) { |i| print i, " " }
#=> 5 6 7 8 9 10

This iterator is used to iterate decreasing values from n to the limit(including limit)

5.downto(1) { |n| print n, ".. " }
#=> "5.. 4.. 3.. 2.. 1..

Step Iterator

The step iterator invokes a block which increments by the value of step with each iteration till the condition mentioned becomes false.

1.step(10, 2) { |i| print i, " " }
#output
1 3 5 7 9 => 1

Math::E.step(Math::PI, 0.2) { |f| print f, " " }
#output
2.718281828459045 2.9182818284590453 3.118281828459045 => 2.718281828459045

Each_Line Iterator

Splits str using the supplied parameter as the record separator ($/ by default), passing each substring in turn to the supplied block. If a zero-length record separator is supplied, the string is split into paragraphs delimited by multiple successive newlines.

print "Example one\n"
"hello\nworld".each_line {|s| p s}
print "Example two\n"
"hello\nworld".each_line('l') {|s| p s}
print "Example three\n"
"hello\n\n\nworld".each_line('') {|s| p s}
#OUTPUT
Example one
"hello\n"
"world"
Example two
"hel"
"l"
"o\nworl"
"d"
Example three
"hello\n\n\n"
"world"