ماذا تعني الكلمة المفتاحية suspend في كوروتينات Kotlin؟
مرحباً بالجميع! بدأت تعلم الكوروتينات في Kotlin، لكنني لا أستطيع فهم ما تفعله الكلمة المفتاحية `suspend` قبل الدالة. قرأت الوثائق، لكن التفسيرات كانت مجردة جداً.
هذا مثال أحاول كتابته:
```kotlin
fun fetchUserData(): String {
Thread.sleep(2000) // محاكاة طلب طويل
return "User data loaded"
}
fun main() {
println("Start")
val result = fetchUserData()
println(result)
println("End")
}
```
هذا الكود يعمل، لكنه يمنع الخيط الرئيسي. أريد فعل نفس الشيء باستخدام الكوروتينات، لكنني لا أفهم لماذا يجب كتابة `suspend` وماذا يعطي.
حاولت الكتابة هكذا:
```kotlin
suspend fun fetchUserDataSuspend(): String {
delay(2000)
return "User data loaded"
}
fun main() {
println("Start")
val result = fetchUserDataSuspend() // خطأ في الترجمة!
println(result)
println("End")
}
```
المترجم يعطي خطأ: "Suspend function 'fetchUserDataSuspend' should be c