Krekna Mektek
12/29/2006 4:53:00 PM
Ah, so the return exits the loop, now I understand.
@Joey:
What I want to achieve? This is just an example from the book ;)
Krekna
2006/12/29, Morton Goldberg <m_goldberg@ameritech.net>:
> On Dec 29, 2006, at 11:08 AM, Krekna Mektek wrote:
>
> > Hi,
> >
> > Still learning from the Pickaxe book, and I've got a question about
> > this code:
> >
> > class Array
> > def find
> > for i in 0..size
> > value = self[i]
> > puts self[i]
> > return value if yield(value)
> > end
> > return nil
> > end
> > end
> >
> > [1,3,5,7,9].find {|v| v*v > 30 }
> >
> > irb(main):369:0> [1,3,5,7,9].find {|v| v*v > 30 }
> > => 7
> >
> >
> > how come it prints only 7, and not also 9?
> > The loop is not stopping as far as I can see, and 9 times 9 is also
> > bigger then 30.
>
> But the loop does stop when it reaches 7. As soon as 'yield(value)'
> evaluates to true, the 'return' is executed and both the method and
> the loop terminate.
>
> Regards, Morton
>
>