Sobes.tech
Middle

Τι σημαίνει η λέξη-κλειδί 'suspend' σε Kotlin;

sobes.tech AI

Απάντηση από AI

Η λέξη-κλειδί suspend στο Kotlin χρησιμοποιείται για να σηματοδοτήσει μια λειτουργία ή έκφραση lambda που μπορεί να διακοπεί και να συνεχιστεί αργότερα. Τέτοιες λειτουργίες ονομάζονται κορουτίνες.

Βασικά χαρακτηριστικά των λειτουργιών suspend:

  • Μπορούν μόνο να καλούνται από μια άλλη λειτουργία suspend ή από ένα scope κορουτίνας.
  • Η διακοπή μιας λειτουργίας δεν μπλοκάρει το νήμα στο οποίο εκτελείται. Αντίθετα, το νήμα μπορεί να χρησιμοποιηθεί για την εκτέλεση άλλων εργασιών.
  • Μετά την εκτέλεση μιας διακοπείσας λειτουργίας (π.χ., ένα αίτημα δικτύου), η λειτουργία συνεχίζει από το σημείο που διακόπηκε.
  • Στα παρασκήνια, ο μεταγλωττιστής Kotlin μετατρέπει τις λειτουργίες suspend σε μηχανές καταστάσεων, χρησιμοποιώντας το Continuation-Passing Style (CPS).

Παράδειγμα:

// Παράδειγμα μιας λειτουργίας suspend για την προσομοίωση μιας μακράς λειτουργίας
suspend fun fetchData(): String {
    // Προσομοίωση ενός αιτήματος δικτύου ή μακράς εργασίας
    kotlinx.coroutines.delay(1000) // Διακοπή χωρίς μπλοκάρισμα του νήματος
    return "Δεδομένα λήφθηκαν"
}

// Λειτουργία που καλεί μια λειτουργία suspend
fun main() = kotlinx.coroutines.runBlocking { // runBlocking δημιουργεί ένα scope κορουτίνας
    println("Φόρτωση δεδομένων...")
    val data = fetchData() // Κλήση λειτουργίας suspend
    println("Δεδομένα: $data")
}