Я ищу способ сделать следующее в Ruby более понятным способом:
class Array
def find_index_with_offset(offset, &block)
[offset..-1].find &block
end
end
offset = array.find_index {|element| element.meets_some_criterion?}
the_object_I_want =
array.find_index_with_offset(offset+1) {|element| element.meets_another_criterion?}
Поэтому я ищу в массиве Ruby индекс некоторого объекта, а затем делаю следующеепоиск, чтобы найти первый объект, который соответствует некоторому другому критерию и имеет более высокий индекс в массиве.Есть лучший способ сделать это?
Что я имею в виду под чистым: что-то, что не подразумевает явной нарезки массива.Когда вы делаете это пару раз, вычисление индексов нарезки быстро становится беспорядочным.Я хотел бы продолжать работать с исходным массивом.Это проще для понимания и менее подвержено ошибкам.
Примечание.В моем реальном коде у меня нет исправленного обезьяной массива, но я хочу обратить внимание на тот факт, что я ожидаю, что я дублирую существующую функциональность Array / Enumerable
Редактирование
- Исправлено местоположение
offset + 1
согласно комментарию Младена Яблановича;ошибка переписывания - Добавлено объяснение «чище» согласно комментарию Младена Яблановича