Można użyć each_with_index
a następnie użyć indeksu zidentyfikować pierwszy i ostatnie przedmioty. Na przykład:
@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
Ewentualnie, jeśli wolisz można oddzielić „środku” tablicy tak:
# 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)
Z obu tych metod trzeba być ostrożnym pożądanego zachowania, gdy istnieje to tylko jedna lub dwie pozycje na liście.
Och, wow, to jest po prostu wspaniałe. –
jest to dokładnie to samo, co druga część odpowiedzi @ thomasfedb (http://stackoverflow.com/a/17135002/410102) – akonsu
+1, ale dlaczego nie tylko "głowa, * ciało, ogon = @ przykład" ? – steenslag