Kotlin hat sehr schöner Iterieren Funktionen, wie forEach
oder repeat
, aber ich bin nicht in der Lage das zu machen break
und continue
mit ihnen Operatoren arbeiten (sowohl lokale als auch nicht-lokal):
repeat(5) {
break
}
(1..5).forEach {
continue@forEach
}
Das Ziel ist es, übliche Schleifen mit der funktionalen Syntax so nah wie möglich nachzuahmen. In einigen älteren Versionen von Kotlin war dies definitiv möglich, aber ich habe Schwierigkeiten, die Syntax zu reproduzieren.
Das Problem könnte ein Fehler mit Labels (M12) sein, aber ich denke, dass das erste Beispiel trotzdem funktionieren sollte.
Es scheint mir, dass ich irgendwo über einen speziellen Trick / eine spezielle Anmerkung gelesen habe, aber ich konnte keine Referenz zu diesem Thema finden. Könnte wie folgt aussehen:
public inline fun repeat(times: Int, @loop body: (Int) -> Unit) {
for (index in 0..times - 1) {
body(index)
}
}
break
und continue
für Funktionsschleifen fragen oder ob Sie nach alternativen Antworten suchen, die genau dasselbe tun. Ersteres scheint der Fall zu sein, weil Sie Letzteres abgelehnt haben.
continue@label
undbreak@label
Funktionen warten ), siehe verwandte Frage: stackoverflow.com/questions/34642868/…