Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tell the end of a .each loop in ruby

If i have a loop such as

users.each do |u|   #some code end 

Where users is a hash of multiple users. What's the easiest conditional logic to see if you are on the last user in the users hash and only want to execute specific code for that last user so something like

users.each do |u|   #code for everyone   #conditional code for last user     #code for the last user   end end 
like image 460
Splashlin Avatar asked Oct 22 '10 20:10

Splashlin


2 Answers

users.each_with_index do |u, index|   # some code   if index == users.size - 1     # code for the last user   end end 
like image 64
Raphomet Avatar answered Oct 12 '22 00:10

Raphomet


If it's an either/or situation, where you're applying some code to all but the last user and then some unique code to only the last user, one of the other solutions might be more appropriate.

However, you seem to be running the same code for all users, and some additional code for the last user. If that's the case, this seems more correct, and more clearly states your intent:

users.each do |u|   #code for everyone end  users.last.do_stuff() # code for last user 
like image 40
meagar Avatar answered Oct 11 '22 23:10

meagar