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.
whentam: Kompilyator, bağlanmış sinif nümunəsi üçünwhenblokunun tam olduğunu təmin edir (bütün hallar əhatə olunub),elsebö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.
whenifadə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.