C'est la seule différence:
chaque:
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
pour:
irb> for x in [1,2,3]; end
=> [1, 2, 3]
irb> x
=> 3
Avec l' for
boucle, la variable d'itérateur est toujours en vie après le bloc est terminé. Avec l' each
boucle, il n'a pas, à moins qu'il ait déjà été définie comme une variable avant la boucle commencé.
Autres que que, for
est juste la syntaxe de sucre pour l' each
méthode.
Lors de l' @collection
est nil
les deux boucles de lever une exception:
Exception: undefined variable locale ou de la méthode `@de la collection " pour les principaux:Objet