Sobes.tech
Middle

Cosa significa la parola chiave 'suspend' in Kotlin?

sobes.tech AI

Risposta dell'AI

La parola chiave suspend in Kotlin viene utilizzata per contrassegnare una funzione o un'espressione lambda che può essere sospesa e ripresa più tardi. Queste funzioni sono chiamate coroutine.

Proprietà principali delle funzioni suspend:

  • Possono essere chiamate solo da un'altra funzione suspend o da uno scope di coroutine.
  • La sospensione di una funzione non blocca il thread in cui viene eseguita. Invece, il thread può essere utilizzato per eseguire altri compiti.
  • Dopo l'esecuzione di un'operazione sospesa (ad esempio, una richiesta di rete), la funzione riprende il suo lavoro dal punto in cui è stata sospesa.
  • Dietro le quinte, il compilatore Kotlin trasforma le funzioni suspend in macchine a stati, usando lo stile Continuation-Passing (CPS).

Esempio:

// Esempio di funzione suspend per simulare un'operazione lunga
suspend fun fetchData(): String {
    // Simulazione di una richiesta di rete o di un compito lungo
    kotlinx.coroutines.delay(1000) // Sospensione senza bloccare il thread
    return "Dati ricevuti"
}

// Funzione che chiama una funzione suspend
fun main() = kotlinx.coroutines.runBlocking { // runBlocking crea uno scope di coroutine
    println("Caricamento dati...")
    val data = fetchData() // Chiamata a funzione suspend
    println("Dati: $data")
}