Ruby重启阵列循环

Bra*_*don 1 ruby arrays

我试图在整个数组迭代完毕后重新启动ruby中的数组循环.

我发现该retry方法不适用于此.代码如下:

letters = ["A","B","C"]

letters.each do |letter|
  puts letter
  if letter == letters.last
    puts "that was the last letter"
    #restart the array from A again (I'd like it to continue looping infinitely)
  end
  sleep 1
end
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激.谢谢!

saw*_*awa 6

使用cycle.

letters.cycle do |letter|
  ...
end
Run Code Online (Sandbox Code Playgroud)

  • 可能感兴趣的@Stefan:`letters.each_with_index.cycle.first(5)#=> [["A",0],["B",1],["C",2],["A" ,0,["B",1]]`,而`letters.cycle.with_index.first(5)#=> [["A",0],["B",1],["C" ,2],["A",3],["B",4]]`. (3认同)
  • @CarySwoveland或`letters.each_with_index.cycle {| l,i | ...}`/`letters.cycle.with_index {| l,i | ......}` (2认同)
  • 后者和`divmod`可能是最通用的 - 它给你循环计数,元素索引和总计数. (2认同)

Ste*_*fan 5

只需将each循环放入另一个循环:

loop do
  letters.each do |letter|
    puts letter
    sleep 1
  end
  puts "that was the last letter"
end
Run Code Online (Sandbox Code Playgroud)