如何获取数组中的下一个元素,但如果当前是最后一个,则获取第一个元素

Fel*_*ger 1 ruby arrays loops

我有一系列颜色代码:

array = %w(#646C74 #F68848 #1FA45C etc...)
Run Code Online (Sandbox Code Playgroud)

每次我查询数组时,我都会与最后使用的颜色进行比较,并希望获得下一个颜色.如果使用的最后一个是数组中的最后一个,我想要第一个.

是否有更专注或简洁的方法来解决这个问题:

index_of_last_used_color = array.index(last_used_color)
next_position = index_of_last_used_color + 1
if color = array[next_position]
    return color
else
    return array.first
end
Run Code Online (Sandbox Code Playgroud)

Urs*_*sus 9

使用cycle方法,枚举器似乎是你正在寻找的.

color_cycle = %w(#646C74 #F68848 #1FA45C).cycle
color_cycle.next # => "#646C74"
color_cycle.next # => "#F68848"
color_cycle.next # => "#1FA45C"
color_cycle.next # => "#646C74"
color_cycle.next # => "#F68848"
Run Code Online (Sandbox Code Playgroud)


Ale*_*kin 5

只是出于好奇,有一些简单的古老的好算术(模计算)仍然存在:

array = %w(#646C74 #F68848 #1FA45C)
index = 1234
item = array[index % array.size]
Run Code Online (Sandbox Code Playgroud)

  • @FellowStranger这只是一个随机数,让你明白使用模运算符你总是在数组范围内结束 (2认同)