Como o ciclo enumerável#funciona? (rubi)
-
26-09-2019 - |
Pergunta
looper = (0..3).cycle
20.times { puts looper.next }
Posso encontrar de alguma forma o próximo de 3? Quero dizer se eu puder conseguir .next
de qualquer elemento em particular a qualquer momento. Não apenas o loop de exibição que começa com o primeiro elemento.
ATUALIZAR
Claro que fui rubi Doc antes de postar minha pergunta. Mas eu não encontrei resposta lá ...
Atualização2
entrada
looper = (0..max_cycle).cycle
max_cycle
= variável que pode ser diferente toda vez que o script é executado
looper
= variável que é sempre do intervalo (0..max_cycle), mas o valor atual quando o script inicia pode ser qualquer. É baseado em Time.now.hour
resultado
Eu quero saber .next
valor de looper
a qualquer momento durante o tempo de execução do script
Solução
Sua pergunta não está muito clara. Talvez você queira algo assim?
(current_value + 1) % (max_cycle + 1)
Se, por exemplo, max_cycle = 3
Você terá a seguinte saída:
current_value returns
0 1
1 2
2 3
3 0