@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?
You can use each_with_index
and then use the index to identify the first and last items. For example:
@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
Alternately, if you prefer you could separate the 'middle' of the array like so:
# 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)
With both these methods you have to be careful about the desired behaviour when there are only one or two items in the list.