Middle
Классҳои sealed чӣ ҳастанд ва мақсади онҳо чист?
sobes.tech AI
Ҷавоб аз AI
Классҳои sealed як хати маҳдудшудаи синфҳоро намояндагӣ мекунанд. Онҳо барои ифода кардани маҷмӯи маҳдудии ҳолатҳо ё арзишҳо истифода мешаванд.
Хусусиятҳои асосӣ ва мақсад:
- Хати маҳдудшуда: Наследи sealed-классҳо бояд дар ҳамон файл ё дар дохили sealed-класс пеш аз Kotlin 1.5 эълон шаванд. Аз версияи 1.5, ин маҳдудият сабук карда шуд: наследиҳо метавонанд дар ҳар файле, ки дар ҳамин пакет аст, бошанд.
- Классҳои enum бо ҳолат: Баръакс аз классҳои enum, ҳар наследии sealed-класс метавонад ҳолати худ ва рафтор дошта бошад.
whenпурра: Компилятор кафолат медиҳад, ки блокиwhenбарои намунаи sealed-класс пурра аст (ҳамаи ҳолатҳо фаро гирифта шудаанд), агар шохаиelseнишон дода нашуда бошад. Ин хатари хатоҳоро дар вақти иҷро кам мекунад.
Масалан:
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>() // Намояндаи ягона
}
fun processResult(result: Result<String>) {
when (result) {
is Result.Success -> {
// Ҳалли натиҷаи муваффақ
println("Data: ${result.data}")
}
is Result.Error -> {
// Ҳалли хатогӣ
println("Error: ${result.exception.message}")
}
Result.Loading -> {
// Ҳалли ҳолати боркунӣ
println("Loading data...")
}
// Шохаи `else` зарур нест, чунки ҳамаи синфҳои зерини
// Result дар компилятор баррасӣ шудаанд
}
}
Мақсад:
- Намояндагии бехатари ҳолатҳо: боэътимод нишон медиҳад, ки чӣ қадар ҳолатҳои эҳтимолӣ, масалан, натиҷаи дархости шабакавӣ (
Success,Error,Loading). - Беҳтар кардани хонданпазирии код: коди равшантар мекунад дар ҳангоми кор бо ҳолатҳои гуногун.
- Беҳбуди бехатари
when-и изразҳо: компилятор кӯмак мекунад, ки ҳолатҳои нобасомон пешгирӣ шаванд. - Иваз кардани классҳои enum бо ҳолат: вақте ки лозим аст, маълумотро бо "вариантҳои" махсуси enumeration пайваст кардан.
Ҳамин тариқ, sealed-классҳо роҳи чандир барои моделсозии маҷмӯаҳои охирини арзишҳо бо имконияти нигоҳ доштани маълумоти махсус барои ҳар арзиш пешниҳод мекунанд, дар ҳоле ки бехатарӣ ва равшанӣ дар кор бо ин арзишҳо дар изразҳои when таъмин карда мешаванд.