Discriminate first and last element in each?

前端 未结 3 1809
借酒劲吻你
借酒劲吻你 2021-02-09 03:29
@example.each do |e|
  #do something here
end

Here I want to do something different with the first and last element in each, how should I achieve this?

3条回答
  •  隐瞒了意图╮
    2021-02-09 03:54

    A fairly common approach is the following (when there are certainly no duplicates in the array).

    @example.each do |e|
      if e == @example.first
        # Things
      elsif e == @example.last
        # Stuff
      end
    end
    

    If you suspect array may contain duplicates (or if you just prefer this method) then grab the first and last items out of the array, and handle them outside of the block. When using this method you should also extract the code that acts on each instance to a function so that you don't have to repeat it:

    first = @example.shift
    last = @example.pop
    
    # @example no longer contains those two items
    
    first.do_the_function
    @example.each do |e|
      e.do_the_function
    end
    last.do_the_function
    
    def do_the_function(item)
      act on item
    end
    

提交回复
热议问题