Sobes.tech
Middle

Ի՞նչ է նշանակում 'suspend' բանալի բառը Kotlin-ում։

sobes.tech AI

Պատասխան AI-ից

Kotlin- ում suspend բանալի բառը օգտագործվում է նշելու համար ֆունկցիա կամ 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")
}