Sobes.tech
Junior — Middle

Kotlin'da sealed class ning afzalliklari va foydalanish holatlarini bilasizmi?

sobes.tech AI

AIdan javob

Kotlin'da sealed sinf, irsiylik hierarxiyasini cheklash uchun ishlatiladi. Sealed sinfning barcha voris sinflari, o'zining sealed sinfi bilan bir xil faylda e'lon qilinishi kerak. Bu kompilatorga barcha mumkin bo'lgan voris variantlarini bilishga imkon beradi, bu esa when ifodalarida else bo'lagi yozmasdan foydalanishga qulay.

Afzalliklar:

  • Tip xavfsizligi: kompilator barcha variantlarning to'liq ishlov berilishini tekshiradi.
  • Cheklangan holatlar yoki voqealar to'plamini modellashtirish uchun qulay.

Foydalanish holatlari:

  • "holat" naqshida holatlarni amalga oshirish.
  • Voqealar yoki buyruqlarni ishlash.
  • API javoblari kabi cheklangan variantlar to'plamini ifodalash.

Misol:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val error: Throwable) : Result()
    object Loading : Result()
}

fun handleResult(result: Result) {
    when(result) {
        is Result.Success -> println("Ma'lumotlar: ${result.data}")
        is Result.Error -> println("Xato: ${result.error.message}")
        Result.Loading -> println("Yuklanmoqda...")
    }
}