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-ը վերադարձնող ֆունկցիան այն վայրերում, որտեղ սպասվում է ցանկացած այլ տիպ։