`brechen` und` weiter` in `forEach` in Kotlin

Kotlin hat sehr schön die Iteration von Funktionen, wie forEach oder repeat, aber ich bin nicht in der Lage, um die break und continue Betreiber arbeiten mit Ihnen (lokale und nicht-lokale):

repeat(5) {
    break
}

(1..5).forEach {
    continue@forEach
}

Ziel ist, zu imitieren, üblich Schleifen mit der funktionalen syntax so nahe, wie es sein könnte. War es durchaus möglich, in einigen älteren Versionen von Kotlin, aber ich kämpfen, um zu reproduzieren die syntax.

Könnte das problem sein, einen Fehler mit Etiketten (M12), aber ich denke, dass das erste Beispiel sollte trotzdem funktionieren.

Scheint es mir, dass ich irgendwo gelesen habe über einen speziellen trick/annotation, aber ich konnte nicht finden jede Bezugnahme auf das Thema. Könnte wie folgt Aussehen:

public inline fun repeat(times: Int, @loop body: (Int) -> Unit) {
    for (index in 0..times - 1) {
        body(index)
    }
}
Kommentar zu dem Problem - Öffnen
In der aktuellen Kotlin kann man zwar imitieren diese (während der Wartezeit für die weiter@label und break@label - Funktionen), siehe Verwandte Frage: stackoverflow.com/questions/34642868/... Kommentarautor: Jayson Minard
Diese Frage konnte verwenden Sie eine Klarstellung darüber, ob Sie Sie bitten, nur über die Existenz von break und weiter für die funktionelle loops, oder wenn Sie die Suche nach alternativen Antworten, die genau das tun die gleiche Sache. Das erstere scheint der Fall zu sein, denn Sie lehnte den letzteren. Kommentarautor: Jayson Minard

InformationsquelleAutor der Frage voddan | 2015-09-12

Schreibe einen Kommentar