"for" vs "each" in Ruby
each, foreach, iteration, loops, ruby
Solution
This is the only difference:
each:
irb> [1,2,3].each { |x| }
=> [1, 2, 3]
irb> x
NameError: undefined local variable or method `x' for main:Object
from (irb):2
from :0
for:
irb> for x in [1,2,3]; end
=> [1, 2, 3]
irb> x
=> 3
With the `for` loop, the iterator variable still lives after the block is done. With the `each` 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 the `each` method.
When `@collection` is `nil` both loops throw an exception:
Exception: undefined local variable or method `@collection' for main:Object
Problem
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).