Sobes.tech
Middle

Навъи Never дар забони Dart чист?

sobes.tech AI

Ҷавоб аз AI

Типи Never нишон медиҳад, ки израз ҳеҷ гоҳ бо муваффақият анҷом намеёбад. Он барои функсияҳо ва усулҳое истифода мешавад, ки ё истисно мебароранд ё дар доираи бебаҳра мегузаранд.

Маслиҳатҳои истифода:

  • Функсияе, ки истисно мебарорад:

    Never _throwError(String message) {
      // Истисно мебарорад, функсия ҳеҷ гоҳ арзише намегардонад
      throw StateError(message);
    }
    
  • Функсия бо доираи бебаҳра:

    Never _infiniteLoop() {
      // Дар доираи бебаҳра ворид мешавад, функсия ҳеҷ гоҳ тамом намешавад
      while (true) {
        // Кор кардан
      }
    }
    

Афзалияти асосии Never он аст, ки кӯмак мекунад, ки компилятор фаҳмад, ки коди пас аз даъвати чунин функсия ё усул дастрас нест, ки имкон медиҳад таҳлили статикӣ барои ошкор кардани хатогиҳои эҳтимолӣ, масалан, коди дастраснашаванда ва идоракунии нодурустии хатоҳо.

Баръакс ба void, ки нишон медиҳад, ки функсия арзише намегардонад (аммо бо муваффақият анҷом меёбад), Never нишон медиҳад, ки функсия ҳеҷ гоҳ дар принсип тамом намешавад.

// Функсия, ки void бармегардонад (муваффақона тамом мешавад, аммо бе арзиш)
void doSomething() {
  print('Кунем');
}

// Функсия, ки Never бармегардонад (ҳеҷ гоҳ муваффақона тамом намешавад)
Never crashAndBurn() {
  throw 'Оҳ на!';
}

Типи Never типи поёнӣ (bottom type) аст, яъне он подтипи ҳар гуна дигар тип мебошад. Ин имкон медиҳад, ки функсияе, ки Never бармегардонад, дар ҷойҳое истифода шавад, ки интизор меравад, ки ҳар гуна дигар тип.