[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

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

Thufir Hawat

10/20/2007 1:57:00 AM

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#se...





thanks,

Thufir

1 Answer

7stud --

10/20/2007 3:28:00 AM

0

Thufir wrote:
> 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)

--
Posted via http://www.ruby-....