96 votes

Dire à la fin d'une .chaque boucle en ruby

Si j'ai une boucle comme

users.each do |u|
  #some code
end

Où les utilisateurs est un hachage de plusieurs utilisateurs. Quelle est la méthode la plus simple logique conditionnelle pour voir si vous êtes sur le dernier utilisateur les utilisateurs de hachage et que vous souhaitez uniquement pour exécuter du code spécifique pour que le dernier utilisateur donc quelque chose comme

users.each do |u|
  #code for everyone
  #conditional code for last user
    #code for the last user
  end
end

Merci

152voto

Raphomet Points 1339
users.each_with_index do |u, index|
  # some code
  if index == users.size - 1
    # code for the last user
  end
end

39voto

meagar Points 85475

Si c'est une autre situation où vous êtes en appliquant un peu de code pour tous , mais le dernier utilisateur, et puis un code unique à seulement la dernière de l'utilisateur, l'une des autres solutions pourraient être plus appropriées.

Cependant, vous semblez être en cours d'exécution le même code pour tous les utilisateurs, et certains supplémentaires code pour le dernier utilisateur. Si c'est le cas, cela semble plus correct et plus clairement votre intention:

users.each do |u|
  #code for everyone
end

users.last.do_stuff() # code for last user

20voto

Alter Lagos Points 1527

Je pense que la meilleure approche est de:

users.each do |u|
  #code for everyone
  if u == users.last
    #code for the last user
  end
end

11voto

Teja Kantamneni Points 9112

Avez-vous essayé each_with_index?

users.each_with_index do |u, i|
  if users.size-1 == i
     #code for last items
  end
end

7voto

DigitalRoss Points 80400
h = { :a => :aa, :b => :bb }
h.each_with_index do |(k,v), i|
  puts ' Put last element logic here' if i == h.size - 1
end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X