Это немного не по теме, но в любое время у вас есть коллекция с размером, и вы хотите получить результат другого размера, который вы можете использовать для инъекции.В большинстве случаев он избегает ненужных циклических операций с входной коллекцией.
Например, если я хочу найти индекс последнего nil:
a = [1,2,nil,6,8,nil,9,nil,10,11,12]
# => [1, 2, nil, 6, 8, nil, 9, nil, 10, 11, 12]
a.inject([-1, nil]){|(current_index, matched), value| current_index += 1; matched = current_index if value.nil?; [current_index, matched]}.last
# => 7