iterating through a block; declaring an index/counter within that block

T

Thufir

Where does "food" come from in the example below? The declaration is
within the block? The varaible food exists only within the block?
What is (are) the value(s) for "food"?




Read the following aloud to yourself.

['toast', 'cheese', 'wine'].each { |food| print food.capitalize }

While this bit of code is less readable and sentence-like than the
previous examples, I'd still encourage you to read it aloud. While
Ruby may sometimes read like English, it sometimes reads as a shorter
English. Fully translated into English, you might read the above as:
With the words 'toast', 'cheese', and 'wine': take each food and print
it capitalized.

The computer then courteously responds: Toast, Cheese and Wine.

<http://poignantguide.net/ruby/chapter-3.html#section1>





thanks,

Thufir
 
7

7stud --

Thufir said:
Where does "food" come from in the example below? The declaration is
within the block? The varaible food exists only within the block?
What is (are) the value(s) for "food"?




Read the following aloud to yourself.

['toast', 'cheese', 'wine'].each { |food| print food.capitalize }

That thing on the right of each, between the braces, is a similar to a
method definition:


def func(food)
print food.capitalize
end

food is the parameter variable and you would call func like this:

func('toast')

'toast' then gets assigned to the parameter variable food.

each() is also method. each() is defined to pass each member of the
thing to its left to the block on its right. It is similar to doing
this:

def each(arr)
count = 0

while count < arr.length
curr_elmt = arr[count]
my_func(curr_elmt)
count += 1
end

end


def my_func(food)
print food.capitalize
end

arr = ['toast', 'cheese', 'wine']
each(arr)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,733
Messages
2,569,440
Members
44,829
Latest member
PIXThurman

Latest Threads

Top