Como escrever este código Java em Kotlin?
//Java
for (int i = 10; i > 0; i--);
Como você pode ver, "i" não pode ser zero.
Eu sei que isso pode ser feito com "downTo" assim:
for (i in 10 downTo 0)
Mas "downTo" inclui zero. Quero que seja exclusivo de zero. Minha pergunta é: existe uma maneira de fazer isso em Kotlin? (apenas dentro do "loop for", sem alterar zero ou dez, e sem nenhum "if" adicional ou algo do tipo)
Não existe um método integrado que crie uma progressão decrescente com um valor final exclusivo. Uma
downUntil
função que cria tal progressão foi proposta em KT-24658 , que atualmente está "a ser discutida". Se você tiver casos de uso práticos quedownUntil
seriam convenientes, recomendo que participe da discussão.É fácil escrever você mesmo uma função assim:
No entanto, ao contrário do
downTo
, o compilador não otimizará isso para um loop for no estilo C em bytecode. Ele criará umIntProgression
objeto e o usaráiterator()
para executar o loop.Recomendo usar
10 downTo 1
por enquanto.