Kotlin ha funzioni di iterazione molto carine, come forEach
o repeat
, ma non sono in grado di far funzionare gli operatori break
e continue
(sia locali che non locali):
repeat(5) {
break
}
(1..5).forEach {
continue@forEach
}
L'obiettivo è imitare i soliti loop con la sintassi funzionale il più vicino possibile. Era sicuramente possibile in alcune versioni precedenti di Kotlin, ma faccio fatica a riprodurre la sintassi.
Il problema potrebbe essere un bug con le etichette (M12), ma penso che il primo esempio dovrebbe funzionare comunque.
Mi sembra di aver letto da qualche parte su uno speciale trucco / annotazione, ma non sono riuscito a trovare alcun riferimento sull'argomento. Potrebbe assomigliare al seguente:
public inline fun repeat(times: Int, @loop body: (Int) -> Unit) {
for (index in 0..times - 1) {
body(index)
}
}
break
e continue
per i cicli funzionali, o se stai cercando risposte alternative che fanno esattamente la stessa cosa. Il primo sembra essere il caso, perché hai rifiutato il secondo.
continue@label
ebreak@label
), vedi la domanda correlata: stackoverflow.com/questions/34642868/…