Kotlin tiene funciones de iteración muy agradables, como forEach
or repeat
, pero no puedo hacer que los operadores break
y continue
funcionen con ellos (tanto locales como no locales):
repeat(5) {
break
}
(1..5).forEach {
continue@forEach
}
El objetivo es imitar los bucles habituales con la sintaxis funcional lo más cerca posible. Definitivamente era posible en algunas versiones anteriores de Kotlin, pero me cuesta reproducir la sintaxis.
El problema puede ser un error con las etiquetas (M12), pero creo que el primer ejemplo debería funcionar de todos modos.
Me parece que he leído en algún lugar sobre un truco / anotación especial, pero no pude encontrar ninguna referencia sobre el tema. Podría tener el siguiente aspecto:
public inline fun repeat(times: Int, @loop body: (Int) -> Unit) {
for (index in 0..times - 1) {
body(index)
}
}
break
y continue
para bucles funcionales, o si está buscando respuestas alternativas que hagan exactamente lo mismo. El primero parece ser el caso, porque rechazó el segundo.
continue@label
ybreak@label
), consulte la pregunta relacionada: stackoverflow.com/questions/34642868/…