Using each - Beginning Ruby Tutorial, Control Structures

Looping through an array in Ruby with the each method

Next: Looping through a hash in Ruby with the each method

Every string, array, and hash in Ruby is an object, and every object of these types has a set of built in methods. Let's take a simple array of names, and see what we can do with the each method. First we create an array object by assigning the array to stooges

 >> stooges = ['Larry', 'Curly', 'Moe'] 
Next we'll call the each method and create a small block of code to process the results.
 >> stooges.each { |stooge| print stooge + "\n" } 
This will produce the following output:
 Larry
 Curly
 Moe 
The each method takes two arguments - an element and a block. The element, contained within the pipes, is like a placeholder. Whatever you put in the pipes will be used in the block to represent each element of the array in turn. The block is the line of code that is executed on each of the array items, and is handed the element to process.

You can easily extend the code block to multiple lines by using do to define a larger block:

 >> stuff.each do |thing|
 .. print thing
 .. print "\n"
 .. end 
This is exactly the same as the first example, except that the block is defined as everything after the element (in pipes) and before the end statement.

Next: Looping through a hash in Ruby with the each method

Just like the array object, the hash object has an each method that can be used to apply a block of code on each item in the hash. First we will create a simple hash object that contains some contact information:

 >> contact_info = { 'name' => 'Bob', 'phone' => '111-111-1111' } 
Then we'll call the each method and create a single line block of code to process and print the results.
 >> contact_info.each { |key, value| print key + ' = ' + value + "\n" } 
This will produce the following output:
 name = Bob
 phone = 111-111-1111 
This works exactly like the each method for an array object with one crucial difference. For a hash, you create two elements - one for the hash key, and one for the value. Like the array each method, these elements are placeholders that are used to pass each key / value pair into the code block as Ruby loops through the hash.

You can easily extend the code block to multiple lines by using do to define a larger block:

 >> contact_info.each do |key, value|
 .. print print key + ' = ' + value
 .. print "\n"
 .. end 
This is exactly the same as the first example, except that the block is defined as everything after the elements (in pipes) and before the end statement.

Previous: Looping through an array in Ruby with the each method