Tak, możesz
some_array[offset..-1].each_with_index{|item, index| some_func(item, index) }
some_array[offset..-1].each_with_index{|item, index| some_func(item, index+offset) }
some_array[offset..-1].each_with_index{|item, index| index+=offset; some_func(item, index) }
UPD
Powinienem również zauważyć, że jeśli przesunięcie jest większe niż rozmiar twojej tablicy, będzie to błąd. Dlatego:
some_array[1000,-1] => nil
nil.each_with_index => Error 'undefined method `each_with_index' for nil:NilClass'
Co możemy tu zrobić:
(some_array[offset..-1]||[]).each_with_index{|item, index| some_func(item, index) }
Lub aby wstępnie zweryfikować przesunięcie:
offset = 1000
some_array[offset..-1].each_with_index{|item, index| some_func(item, index) } if offset <= some_array.size
To trochę hacky
UPD 2
O ile zaktualizowałeś swoje pytanie i teraz nie potrzebujesz przesunięcia tablicy, ale przesunięcia indeksu, więc rozwiązanie @sawa będzie działać dobrze dla Ciebie