【发布时间】:2014-11-27 15:05:23
【问题描述】:
我编写了一个方法来获取数组中给定元素之后的下一个元素。如果我为该方法提供c,我希望它返回e;如果e,我希望它返回a等:
array = %w[a f c e]
def find_element_after(element, array)
index = array.find_index(element) + 1
array.at(index)
end
array.find_element_after("c", array)
如果我传入最后一个元素,我将得到nil。但我想返回第一个元素。
我可以用if 和else 解决这个问题。但是我想知道Ruby是否有更好的方法?
【问题讨论】:
-
没有必要删除更改的文本。如果有什么不合理的地方,我们可以查看编辑历史记录。
-
需要考虑的一点是,由于您使用的是线性搜索,
array的大小会变大,这将如何减慢速度。相反,我可能会在管理/维护该哈希的自定义类中使用某种链接列表或哈希。关键是您要搜索的内容,值是下一个元素。这将是一个非常一致的查找速度和稍慢的插入时间。 -
@theTinMan 感谢您指出这两件事。在这种情况下,我可能会有不到 100 个项目,这应该是微不足道的。不过很高兴知道。