I just had a quick question regarding loops in Ruby. Is there a difference between these two ways of iterating through a collection?
# way 1
@collection.each do |item|
# do whatever
end
# way 2
for item in @collection
# do whatever
end
Just wondering if these are exactly the same or if maybe there's a subtle difference (possibly when @collection
is nil).
Best Answer
This is the only difference:
each:
for:
With the
for
loop, the iterator variable still lives after the block is done. With theeach
loop, it doesn't, unless it was already defined as a local variable before the loop started.Other than that,
for
is just syntax sugar for theeach
method.When
@collection
isnil
both loops throw an exception: