¿Qué significa la función suspend en las corrutinas de Kotlin? Explicación para principiantes
¡Hola a todos! Empecé a estudiar corrutinas en Kotlin y no logro entender qué es una función suspend. En la documentación dicen que es una "función que se puede suspender", pero eso no me dice nada.
Intenté escribir un código simple, pero no compila:
```kotlin
fun main() {
fetchUserData() // Error: Suspend function 'fetchUserData' should be called only from a coroutine or another suspend function
}
suspend fun fetchUserData(): String {
delay(1000) // simulación de una operación larga
return "User data"
}
```
¿Por qué no puedo simplemente llamar a esta función desde main? ¿Qué es realmente "suspend"? ¿Cómo funciona por debajo? He leído sobre async/await en otros lenguajes, pero aquí todo parece diferente. Explíquenme, por favor, en palabras simples con ejemplos qué es una función suspend y para qué sirve.
Me interesa especialmente:
1. ¿Qué sucede con el hilo cuando se llama a una función suspend?
2. ¿En qué se diferencia de una función normal?
3. ¿Por qué no se puede llamar desde una función normal?