Von kotlinlang Website:
Return bei Labels
Mit Funktionsliteralen, lokale Funktionen und Objektausdruck, können Funktionen in Kotlin verschachtelt werden. Qualifizierte Rückgaben ermöglichen uns, von einer äußeren Funktion zurückzukehren. Der wichtigste Anwendungsfall ist die Rückkehr von einem Lambda-Ausdruck. Daran erinnern, dass, wenn wir schreiben dies:
fun foo() {
ints.forEach {
if (it == 0) return // nonlocal return from inside lambda directly to the caller of foo()
print(it)
}
}
Die return
-Ausdrucks kehrt von der nächsten einschließenden Funktion, das heißt foo. (Beachten Sie, dass eine solche nicht-lokale Rückkehr nur für Lambda-Ausdrücke, um Inline-Funktionen übergeben werden unterstützt.) Wenn wir von einem Lambda-Ausdruck zurückkommen müssen, haben wir es beschriften und zu qualifizieren, die return
:
fun foo() {
ints.forEach [email protected] {
if (it == 0) [email protected]
print(it)
}
}
Jetzt ist es, gibt nur vom Lambda-Ausdruck zurück. Oft ist es bequemer, implicits labels zu verwenden: Ein solches label hat denselben Namen wie die Funktion, an die das lambda übergeben wird.
fun foo() {
ints.forEach {
if (it == 0) [email protected]
print(it)
}
}