Avatar ·

O que significa `return@` em Kotlin e como usar corretamente os labels de retorno?

Olá a todos! Estou aprendendo Kotlin e me deparei com uma construção estranha `return@`. Vejo isso em código com RxJava, mas não entendo para que serve. Eu tenho este código: ```kotlin fun main() { listOf(1, 2, 3, 4, 5).forEach { if (it == 3) { return@forEach } println(it) } println("Pronto") } ``` Eu esperava que `return` simplesmente saísse do forEach, mas ele sai de toda a função main. Sem `@forEach` o código nem compila, dando erro "return is not allowed here". Por que isso? Também vi este exemplo com RxJava: ```kotlin observable.subscribe { value -> if (value.isInvalid()) { return@subscribe } process(value) } ``` O que significa `return@subscribe`? Por que não posso simplesmente escrever `return`? Expliquem, por favor, como funcionam esses labels. Quando devo usá-los e quando posso dispensá-los? Estou completamente confuso com essa sintaxe. Desde já, obrigado! <<>>

O que são labels de retorno em Kotlin?