Č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.