 <p><code>for</code> is indeed mostly just sugar for <code>each</code> (Try using <code>for</code> on a non enumerable object - it should complain about it not responding to each). It differs in that it doesn't create block scope. </p> <p>How <code>each</code> is implemented depends on the object you are calling it on (each is the method on which all of Enumerable is built). In any case the block will be called with a succession of values. Reassigning the block variable that is yielded does nothing - upon the next iteration <code>i</code> is set to whatever the next value should be.</p> <p>You can skip with <code>next</code> or terminate with <code>break</code> but that's it as far as controlling the iteration goes - there's no way of saying "jump forwards 3"</p>