Identifying last loop when using for each

后端 未结 25 1487
眼角桃花
眼角桃花 2020-12-08 09:59

I want to do something different with the last loop iteration when performing \'foreach\' on an object. I\'m using Ruby but the same goes for C#, Java etc.

          


        
25条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-08 10:11

    Ruby also has each_index method:

    list = ['A','B','C']
    list.each_index{|i|
      if i < list.size - 1
        puts "Looping:"+list[i]
      else
        puts "Last one:"+list[i]
    }
    

    EDIT:

    Or using each (corrected TomatoGG and Kirschstein solution):

    list = ['A', 'B', 'C', 'A']
    list.each { |i|
       if (i.object_id != list.last.object_id)
          puts "Looping:#{i}"
       else
          puts "Last one:#{i}"
       end
    }
    
    Looping:A
    Looping:B
    Looping:C
    Last one:A
    

    Or

    list = ['A', 'B', 'C', 'A']
    list.each {|i| 
      i.object_id != list.last.object_id ? puts "Looping:#{i}" : puts "Last one:#{i}"       
    }
    

提交回复
热议问题