Sobes.tech
Junior

Тавзеҳ диҳед дар бораи консепсияи изҳороти 'when' дар забони барномасозии Kotlin.

sobes.tech AI

Ҷавоб аз AI

Дар Kotlin when — оператори сохтории умувормандест, ки ҷойи switch анъанавии дар дигар забонҳоро мегирад. Он метавонад ҳамчун изҳориш (ки арзишро бармегардонад) ё ҳамчун оператор истифода шавад.

Вазифаҳои асосӣ:

  • Мувофиқати арзишҳо: Мувофиқати бо арзишҳои мушаххас.

    fun describe(obj: Any): String =
        when (obj) {
            1           -> "Як"
            "Hello"     -> "Салом"
            is Long     -> "Дароз"
            !is String  -> "На сатр"
            else        -> "Номуайян"
        }
    
  • Тафтиш кардани навъ (is/!is): Мувофиқати бо навъҳои маълумот.

  • Тафтиш кардани дохилшавӣ (in/!in): Таҳқиқи дохилшавӣ ба доира ё ҷамъоварӣ.

    fun checkRange(x: Int): String =
        when (x) {
            in 1..10   -> "Шуморҳои мусбат дар доира"
            !in 10..20 -> "Дар доираи дуввум нест"
            else       -> "Ҳеҷ яке аз болояш"
        }
    
  • Бе аргумент: Истифода мешавад ҳамчун ивазкунандаи бештар чандир барои пайдарпайи if-else if-else. Шартҳо ба таври пайдарпай арзёбӣ мешаванд.

    fun checkBoolean(x: Boolean, y: Boolean): String =
        when {
            x && y -> "Ҳарду дуруст"
            !x && !y -> "Ҳарду нодуруст"
            else -> "Микс"
        }
    
  • Баргардонидани арзиш: Агар when ҳамчун изҳориш истифода шавад, бояд комил бошад (ҳама ҳолатҳои имконпазирро фаро гирад ё як шохаи else дошта бошад).

when хондан ва бехатарии коди худро нисбат ба switch анъанавӣ беҳтар мекунад.