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.