From: Eric Mahurin Date: 2005-05-12T04:59:12+09:00 Subject: object loops and what they return Consider these loops: . { } 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