È possibile utilizzare each_with_index
e quindi utilizzare l'indice per identificare il primo e ultimi oggetti. Per esempio:
@data.each_with_index do |item, index|
if index == 0
# this is the first item
elsif index == @data.size - 1
# this is the last item
else
# all other items
end
end
In alternativa, se si preferisce si potrebbe separare il 'mezzo' della matrice in questo modo:
# This is the first item
do_something(@data.first)
@data[1..-2].each do |item|
# These are the middle items
do_something_else(item)
end
# This is the last item
do_something(@data.last)
Con entrambi questi metodi bisogna stare attenti al comportamento desiderato quando c'è sono solo uno o due elementi nella lista.
Oh wow, questo è solo _awesome_. –
questo è essenzialmente la seconda parte della risposta di @ thomasfedb (http://stackoverflow.com/a/17135002/410102) – akonsu
+1, ma perché non solo "head, * body, tail = @ example" ? – steenslag