我有一系列颜色代码:
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)
使用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)
只是出于好奇,有一些简单的古老的好算术(模计算)仍然存在:
array = %w(#646C74 #F68848 #1FA45C)
index = 1234
item = array[index % array.size]
Run Code Online (Sandbox Code Playgroud)