> Maybe I'm wrong (as is not that un-common) and I'm not seeing something. > But I can't figure out anything in favor of having |x,y,z| be potentially > non-local but for efficiency. Well, the most common way I use something like this is as a way to tell if I broke out of a loop and where, such as i, obj = nil, nil data_objects.each_with_index {|obj, i| if not obj.valid? break else obj.do_something end } if not obj.valid? print "The object at index ", i, " was invalid. Aborted." end And, yes, I could do this by doing something like last_i, last_obj = nil, nil data_objects.each_with_index {|obj, i| last_i, last_obj = i, obj if ... } but, well, you could just rename variables something that doesn't conflict, rather than me having to rename variables so they're not shadowed. It's convenient. --Johann