Kotlin a de très belles fonctions d'itération, comme forEach
ou repeat
, mais je ne suis pas en mesure de faire fonctionner les opérateurs break
et continue
avec 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)
}
}
break
et continue
pour 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@label
etbreak@label
), voir la question associée: stackoverflow.com/questions/34642868/...