Junior — Middle
¿Se puede realizar un retorno desde una función fuera del contexto actual dentro de una función declarada como crossinline en Kotlin?
sobes.tech AI
Respuesta de la IA
En Kotlin, una función declarada con el modificador crossinline prohíbe la ejecución de retornos no controlados (non-local return) desde la lambda que recibe. Esto significa que no se puede hacer un return desde la lambda para salir de la función externa en la que se llama a esa lambda.
Ejemplo:
inline fun foo(crossinline block: () -> Unit) {
val runnable = Runnable {
block() // no se puede usar non-local return aquí
}
runnable.run()
}
fun bar() {
foo {
// return // error de compilación, no se puede hacer un non-local return
println("Ejecución de la lambda")
}
println("Continuación de la función bar")
}
Por lo tanto, no es posible retornar desde la función fuera del contexto actual dentro de una lambda crossinline. Esta restricción se introduce por motivos de seguridad y predictibilidad del código, especialmente cuando se usan lambdas en llamadas asíncronas o diferidas.