Junior — Middle
É possível fazer um retorno de uma função fora do contexto atual dentro de uma função declarada como crossinline em Kotlin?
sobes.tech IA
Resposta da IA
No Kotlin, uma função declarada com o modificador crossinline proíbe a execução de retorno não controlado (non-local return) a partir da lambda que ela aceita. Isso significa que não é possível fazer um return na lambda para sair da função externa na qual essa lambda é chamada.
Exemplo:
inline fun foo(crossinline block: () -> Unit) {
val runnable = Runnable {
block() // não é possível usar non-local return aqui
}
runnable.run()
}
fun bar() {
foo {
// return // erro de compilação, não é possível fazer um non-local return
println("Execução da lambda")
}
println("Continuação da função bar")
}
Portanto, não é possível retornar de uma função fora do contexto atual dentro de uma lambda crossinline. Essa restrição foi introduzida por motivos de segurança e previsibilidade do código, especialmente ao usar lambdas em chamadas assíncronas ou diferidas.