Kotlin tiene funciones de iteración muy agradables, como forEachor repeat, pero no puedo hacer que los operadores breaky continuefuncionen 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)
}
}
breaky continuepara bucles funcionales, o si está buscando respuestas alternativas que hagan exactamente lo mismo. El primero parece ser el caso, porque rechazó el segundo.
continue@labelybreak@label), consulte la pregunta relacionada: stackoverflow.com/questions/34642868/…