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