Middle
Seal sinflari bilan tanishdingizmi va ularning xususiyati nima?
sobes.tech AI
AIdan javob
Ha, tanishaman.
sealed sinflarining xususiyati shundaki, ular vorislik hierarxiyasini cheklash imkonini beradi. sealed sinfning barcha to'g'ridan-to'g'ri vorislari bir xil faylda e'lon qilinishi kerak. Bu kompilatorga barcha mumkin bo'lgan vorislarni bilishni ta'minlaydi, bu esa when ifodalarida to'ldirishni tekshirish uchun foydalidir.
Misol:
sealed class Result {
data class Success(val message: String) : Result()
data class Error(val code: Int, val description: String) : Result()
object Loading : Result() // Yuklash holati uchun singleton
}
fun processResult(result: Result) {
when (result) {
is Result.Success -> println("Muvaffaqiyat: ${result.message}")
is Result.Error -> println("Xato ${result.code}: ${result.description}")
Result.Loading -> println("Yuklanmoqda...")
// Else kerak emas, chunki kompilator barcha variantlarni biladi
}
}
Afzalliklar:
- Xavfsizlik:
whenifodalarining to'liqligini kafolatlaydi,elsekerak emas. - O'qilishi: Cheklangan holatlar yoki vorislarning aniq ko'rsatilishini ta'minlaydi.
- Nazorat: tashqaridan nazorat qilinmaydigan vorislikni oldini oladi.
enum class bilan farqi: sealed sinflar har bir voris uchun turli ma'lumot turlariga ega bo'lishi mumkin (masalan, Success va Error), enum class elementlari statik bo'lib, faqat belgilangan xususiyatlarga ega bo'lishi mumkin, ular hammaga umumiy. sealed sinflar shuningdek, obyekt-nesnalarni (Loading) ham bo'lishi mumkin.