Sobes.tech
Middle

Mida tähendab võtmesõna 'suspend' Kotlinis?

sobes.tech AI

Vastus AI-lt

Kotlinis märksõna suspend kasutatakse funktsiooni või lambda väljendi märkimiseks, mis potentsiaalselt võib olla peatatud ja hiljem jätkatud. Selliseid funktsioone nimetatakse korutinideks.

suspend funktsioonide peamised omadused:

  • Neid saab kõneerida ainult teise suspend funktsiooni või korutina scope'ist.
  • Funktsiooni peatamine ei blokeeri selle täitmisel olevat niiti. Selle asemel saab niit kasutada teiste ülesannete täitmiseks.
  • Pärast peatatud operatsiooni (näiteks võrgupäringut) täitmist jätkab funktsioon tööd sealt, kus see peatati.
  • Tagaplaanil teisendab Kotlin kompilaator suspend funktsioonid olekute masinatesse, kasutades Continuation-Passing Style (CPS).

Näide:

// Näide `suspend` funktsioonist, mis simuleerib pikaajalist operatsiooni
suspend fun fetchData(): String {
    // Võrgu päringu või pika ülesande simulatsioon
    kotlinx.coroutines.delay(1000) // Peatamine ilma niidi blokeerimiseta
    return "Andmed saadud"
}

// Funktsioon, mis kutsub `suspend` funktsiooni
fun main() = kotlinx.coroutines.runBlocking { // runBlocking loob korutina scope'i
    println("Andmete laadimine...")
    val data = fetchData() // `suspend` funktsiooni kutsumine
    println("Andmed: $data")
}