1
我正在尋找一個方式做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數組一些對象的索引,然後我做了後續搜索以找到匹配其他條件的第一個對象,並在數組中具有較高的索引。有一個更好的方法嗎?
清潔工具是什麼意思:不涉及顯式切片數組。當你這樣做幾次時,計算切片索引會變得很快。我想繼續在原始數組上運行。它更容易理解,並且不易出錯。
注意:在我實際的代碼我沒有猴子打補丁的陣列,但我想提醒大家注意這樣的事實,我希望我重複陣列的現有功能/可枚舉
編輯
- 固定根據MladenJablanović的評論,
offset + 1
的位置;重寫錯誤 - 「清潔」的增加解釋爲每姆拉登Jablanović的評論
你是什麼意思的「清潔」?什麼困擾你的解決方案? '[]'創建一個新數組的事實?還是僅僅是美學? – 2012-03-29 13:02:18
順便說一句,我認爲你應該在'[offset ..- 1]'內進行搜索,然後將'(offset + 1)'傳遞給方法調用。 IMO更合乎邏輯。 – 2012-03-29 13:05:34
如果你想避免切片,簡單的循環更清潔 – 2012-03-29 13:39:39