Sobes.tech
Middle

Sealed siniflər nədir və onların məqsədi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Bağlanmış siniflər məhdud sinif irsiyəklərini təmsil edir. Onlar məhdud sayda mümkün vəziyyət və ya dəyər toplusunu göstərmək üçün istifadə olunur.

Əsas xüsusiyyətlər və məqsəd:

  • Məhdud irsiyyət: Bağlanmış sinfin törəmələri Kotlin 1.5-dən əvvəl eyni faylda və ya bağlanmış sinif daxilində elan edilməlidir. Versiya 1.5-dən etibarən bu məhdudiyyət yumşaldılmışdır: törəmələr eyni paketdə istənilən faylda ola bilər.
  • Vəziyyətli enum siniflər: Enum siniflərdən fərqli olaraq, hər bir bağlanmış sinif törəməsi öz vəziyyət və davranışına sahib ola bilər.
  • when tam: Kompilyator, bağlanmış sinif nümunəsi üçün when blokunun tam olduğunu təmin edir (bütün hallar əhatə olunub), else bölməsi göstərilməyibsə. Bu, icra zamanı səhvlərin ehtimalını azaldır.

Nümunə:

sealed class Result<out T> {
    data class Success<out T>(val data: T) : Result<T>()
    data class Error(val exception: Exception) : Result<Nothing>()
    object Loading : Result<Nothing>() // Yeganə nümunə
}

fun processResult(result: Result<String>) {
    when (result) {
        is Result.Success -> {
            // Uğurlu nəticənin emalı
            println("Data: ${result.data}")
        }
        is Result.Error -> {
            // Xəta emalı
            println("Error: ${result.exception.message}")
        }
        Result.Loading -> {
            // Yükləmə vəziyyətinin emalı
            println("Loading data...")
        }
        // `else` bölməsinə ehtiyac yoxdur, çünki bütün alt siniflər
        // Result tərəfindən əhatə olunub
    }
}

Məqsəd:

  • Təhlükəsiz vəziyyət nümayişi: Məsələn, şəbəkə sorğusunun nəticəsi kimi, mümkün vəziyyətlərin sonlu sayını etibarlı şəkildə göstərmək (Success, Error, Loading).
  • Kodun oxunaqlığını artırmaq: Müxtəlif halların işlənməsində kodu daha aydın etmək.
  • when ifadələrinin etibarlılığını artırmaq: Kompilyator, işlənməyən halların qarşısını almağa kömək edir.
  • Vəziyyətli enum siniflərinin yerinə keçmək: Müəyyən "variantlar" ilə məlumatları əlaqələndirmək lazım olduqda.

Beləliklə, bağlanmış siniflər, hər bir dəyər üçün xüsusi məlumatların saxlanması imkanı ilə sonlu dəyərlər toplarını modelləşdirmək üçün çevik bir yol təqdim edir və bu dəyərlərin when ifadələrində təhlükəsiz və aydın işlənməsini təmin edir.