gpt4 book ai didi

ruby - 如何在给定数组中的某个元素的情况下找到下一个元素

转载 作者:太空宇宙 更新时间:2023-11-03 17:10:21 25 4
gpt4 key购买 nike

我编写了一个方法来获取数组中给定元素之后的下一个元素。如果我为方法提供 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。但我想返回第一个元素。

我可以用 ifelse 解决这个问题。但我想知道 Ruby 是否有更好的方法?

最佳答案

您可以修改您的方法,将数组大小考虑在内,如下所示:

array = %w[a f c e]

def find_element_after(element, array)
index = array.find_index(element) + 1
array.at(index % array.size) # divide calculated index modulo array size
end

find_element_after('e', array)
# => "a"

如果你想让你的方法证明传递的参数不是数组成员,你可以这样做:

def find_element_after(element, array)
index = array.find_index(element)
array.at((index + 1) % array.size) if index
end
find_element_after('u', array)
# => nil

或者:

def find_element_after(element, array)
return nil unless array.include?(element)
index = array.find_index(element)
array.at(index % array.size)
end

如您所见,有许多可能的解决方案。随意尝试。

关于ruby - 如何在给定数组中的某个元素的情况下找到下一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27173681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com