Sobes.tech
Middle

Оё бо классҳои sealed шинос ҳастӣ ва хусусияти онҳо чист?

sobes.tech AI

Ҷавоб аз AI

Бале, ман мешурам.

Хусусияти sealed синфҳо он аст, ки онҳо имкон медиҳанд, ки хирархияи меросро маҳдуд кунанд. Ҳамаи навъҳои мустақими sealed синф бояд дар ҳамон файл эълон шаванд. Ин кафолат медиҳад, ки компилятор ҳамаи навъҳои имконпазирро медонад, ки барои санҷиши пурраият дар изразҳои when муфид аст.

Масалан:

sealed class Result {
    data class Success(val message: String) : Result()
    data class Error(val code: Int, val description: String) : Result()
    object Loading : Result() // Объекти ягона барои ҳолати боркунӣ
}

fun processResult(result: Result) {
    when (result) {
        is Result.Success -> println("Пурра: ${result.message}")
        is Result.Error -> println("Хатогӣ ${result.code}: ${result.description}")
        Result.Loading -> println("Дарҳол бор карда мешавад...")
        // Ниёз ба else нест, зеро компилятор ҳамаи вариантҳоро медонад
    }
}

Фоидаҳо:

  • Бехатарӣ: Гарант мекунад, ки изрази when пурра аст, бе ниёз ба else.
  • Таззод: Ба равшанӣ нишон медиҳад, ки маҷмӯи маҳдуди ҳолатҳо ё навъҳои имконпазир.
  • Назорат: Мегузорад, ки меросгирии ғайриназоратӣ аз берун пешгирӣ шавад.

Тафовут бо enum class: sealed синфҳо метавонанд намудҳои гуногуни маълумот барои ҳар навъ дошта бошанд (масалан, Success ва Error дар мисол), дар ҳоле ки унсурҳои enum class статикӣ ҳастанд ва танҳо метавонанд хусусиятҳои муайян дошта бошанд, ки барои ҳама умумӣ мебошанд. sealed синфҳо инчунин метавонанд объектҳои намуна (Loading) дошта бошанд.