Kotlin a de très belles fonctions d'itération, comme forEachou repeat, mais je ne suis pas en mesure de faire fonctionner les opérateurs breaket continueavec eux (à la fois locaux et non locaux):
repeat(5) {
break
}
(1..5).forEach {
continue@forEach
}
Le but est d'imiter les boucles habituelles avec la syntaxe fonctionnelle aussi proche qu'elle pourrait l'être. C'était certainement possible dans certaines anciennes versions de Kotlin, mais j'ai du mal à reproduire la syntaxe.
Le problème pourrait être un bug avec les étiquettes (M12), mais je pense que le premier exemple devrait quand même fonctionner.
Il me semble que j'ai lu quelque part sur une astuce / annotation spéciale, mais je n'ai trouvé aucune référence sur le sujet. Cela pourrait ressembler à ce qui suit:
public inline fun repeat(times: Int, @loop body: (Int) -> Unit) {
for (index in 0..times - 1) {
body(index)
}
}
breaket continuepour les boucles fonctionnelles, ou si vous recherchez des réponses alternatives qui font exactement la même chose. Le premier semble être le cas, car vous avez rejeté le second.
continue@labeletbreak@label), voir la question associée: stackoverflow.com/questions/34642868/...