What is the most short/elegant way of ending the current iteration
within a block? My first thought was that `next' will break the
iteration and last evaluated expr will be returned to the caller, but
surprisingly `nil' is returned this way, so we have (Ruby 1.6.8):
['bar','quux'].map {'foo'; next; 42}
=> [nil, nil]
instead of two foos in an array.
In a real code, when I don't want to make the content of a block a
multibranched if statement (or something similar), I use something
like that:
#v+
aMethod do |item|
catch :next do
#blah
throw :next, special_result if special_condition
#blahblah
default_result
end
end
#v-
...but maybe there's something better? (I really don't think I found a
bug regarding `next' behaviour :)
--
We demand rigidly defined areas of doubt and uncertainty!