Sobes.tech
Middle

Čo je typ Never v jazyku Dart?

sobes.tech AI

Odpoveď od AI

Typ Never je indikátor toho, že výraz sa nikdy úspešne neskončí. Používa sa pre funkcií a metód, ktoré buď vyhadzujú výnimku, alebo vstupujú do nekonečného cyklu.

Príklady použitia:

  • Funkcia, ktorá vyhadzuje výnimku:

    Never _throwError(String message) {
      // Vyhadzuje výnimku, funkcia nikdy nevráti hodnotu
      throw StateError(message);
    }
    
  • Funkcia s nekonečným cyklom:

    Never _infiniteLoop() {
      // Vstupuje do nekonečného cyklu, funkcia sa nikdy neskončí
      while (true) {
        // Robíme niečo
      }
    }
    

Hlavná výhoda Never je, že pomáha prekladaču pochopiť, že kód po volaní takejto funkcie alebo metódy je nedosiahnuteľný, čo umožňuje statickú analýzu na odhalenie potenciálnych chýb, ako je nedosiahnuteľný kód a nesprávne spracovanie chýb.

Na rozdiel od void, ktoré znamená, že funkcia nevracia hodnotu (ale úspešne končí), Never znamená, že funkcia nikdy neskončí v zásade.

// Funkcia, ktorá vracia void (úspešne končí, ale bez hodnoty)
void doSomething() {
  print('Robím niečo');
}

// Funkcia, ktorá vracia Never (nikdy úspešne nekončí)
Never crashAndBurn() {
  throw 'Ó nie!';
}

Typ Never je spodný typ (bottom type), teda je podtypom akéhokoľvek iného typu. To umožňuje použiť funkciu, ktorá vracia Never, na miestach, kde sa očakáva akýkoľvek iný typ.