Sobes.tech
Middle

Co je typ Never v jazyce Dart?

sobes.tech AI

Odpověď od AI

Typ Never je indikátor toho, že výraz se nikdy úspěšně neskončí. Používá se pro funkce a metody, které buď vyhazují výjimku, nebo vstupují do nekonečného cyklu.

Příklady použití:

  • Funkce, která vyhazuje výjimku:

    Never _throwError(String message) {
      // Vyhazuje výjimku, funkce nikdy nevrátí hodnotu
      throw StateError(message);
    }
    
  • Funkce s nekonečným cyklem:

    Never _infiniteLoop() {
      // Vstupuje do nekonečného cyklu, funkce se nikdy neskončí
      while (true) {
        // Děláme něco
      }
    }
    

Hlavní výhodou Never je, že pomáhá překladači pochopit, že kód po volání takové funkce nebo metody je nedosažitelný, což umožňuje statickou analýzu pro odhalení potenciálních chyb, například nedosažitelný kód a nesprávné zpracování chyb.

Na rozdíl od void, které znamená, že funkce nevrací hodnotu (ale úspěšně končí), Never znamená, že funkce nikdy neskončí v zásadě.

// Funkce, která vrací void (úspěšně končí, ale bez hodnoty)
void doSomething() {
  print('Dělám něco');
}

// Funkce, která vrací Never (nikdy úspěšně nekončí)
Never crashAndBurn() {
  throw 'Ó ne!';
}

Typ Never je spodní typ (bottom type), což znamená, že je podtypem jakéhokoliv jiného typu. To umožňuje použít funkci, která vrací Never, na místech, kde je očekáván jakýkoliv jiný typ.