Comment agir différemment sur la première itération dans un Rubis boucle?

J'ai toujours utiliser un compteur pour vérifier le premier élément (i==0) dans une boucle:

i = 0
my_array.each do |item|
  if i==0
    # do something with the first item
  end
  # common stuff
  i += 1
end

Est-il une façon plus élégante de le faire (peut-être une méthode)?

  • Pourquoi tout le monde vote pour fermer cette? C'est une véritable question.
  • Ce qui ne vous empêche dans ce cas de faire ce que vous avez besoin avec le premier élément dans le tableau, puis de faire un normal each boucle avec juste le commun des trucs?
  • S'il fait quelque chose de spécial pour le premier élément (avec array.first ou array[0]), puis exécute l' each boucle, il faudra encore de test pour le premier article s'il ne veut pas faire la chose régulière sur le premier élément aussi.
  • Oui mais dans l'exemple ci-dessus, il ne veux faire de la commune de trucs sur le premier élément. Et si il ne le fait pas, ne pouvait-il pas juste de faire my_array[1..-1].each?
  • Je pense que Russell de traiter avec le premier élément en dehors de la boucle, et ensuite une boucle à partir du deuxième élément.
  • Dans l'exemple ci-dessus le commun des trucs qui va arriver à tous les éléments, y compris le premier élément. Si vous avez besoin de faire des choses différentes pour les différents éléments qu'il ne sonne pas comme un très bon candidat pour le code dans une boucle... donc je pense que l'avoir à l'extérieur de la boucle a plus de sens.
  • stackoverflow.com/questions/2241684/... c'est une question semblable.
  • double possible de Faire quelque chose de spécial la première fois dans un Rubis boucle