Dart тилинде Never тиби эмне?
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 кайтарган функцияны, күтүлүүчү башка бардык тибтердин ордуна колдонууга мүмкүндүк берет.