Consider these loops:
<object>.<loop-method> { <code> }
where loop method is each, each_with_index, upto, downto, step,
and probably others.
Although it is not documented, all of these look to return the
origninal object (collection or int). Does anybody find this
useful?? If not, I would propose that these return nil just
like loop, while, until, begin/end while, and begin/end until.
I've never found the return value of these methods useful, but
I have found the the built-in loops returning nil useful. Here
are a couple:
# find first index where you find the object obj in array
index = array.each_with_index do |i,x|
break(i) if obj.equal?(x)
end
# find last index where you find the object obj in array
index = (array.size-1).downto(0) do |i,x|
break(i) if obj.equal?(x)
end
The problem with the above now is that index will be the loop
object (array and array.size-1 from above) when you don't find
the obj. Instead of the above, I end up using old-style loops
to accomplish what I want.
With "each" returning nil, you can also see that many of the
derived loops in Enumerable become trival almost to where you
don't need them.
Yahoo! Mail
Stay connected, organized, and protected. Take the tour:
http://tour.mail.yahoo.com/mailtour.html