sealed-luokat ja tyhjentävä switch
Sulje luokkahierarkia, jonka kääntäjä voi tarkistaa
sealed-luokat ja tyhjentävä switch on ilmainen Dart Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Dart Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Dart Academy-kurssilla on yhteensä 4 oppituntia.
Suljettu perhe
sealed-luokka määrittää kiinteän joukon alityyppejä. Mikään luokan tiedoston ulkopuolinen koodi ei voi lisätä uutta alityyppiä, joten koko perhe tunnetaan täysin.
sealed class Shape {}Alityyppien määrittäminen
sealed-tyypin aliluokat sijaitsevat samassa tiedostossa. Yhdessä ne muodostavat kaikki mahdolliset variantit, jotka kääntäjän on otettava huomioon.
class Circle extends Shape {}
class Square extends Shape {}Ei suoraa instansiointia
sealed-luokka on implisiittisesti abstrakti, joten et koskaan luo sitä suoraan. Luot aina jonkin sen tunnetuista alityypeistä.
var s = Shape(); // error
var s = Circle(); // okSealed-määritteen hyödyt
Koska alityypit kattavat kaikki vaihtoehdot eli ovat exhaustive, Dart tuntee niiden täydellisen luettelon. Siksi switch voi tarkistaa, että olet käsitellyt jokaisen tapauksen.
Vaihtaminen alityyppien perusteella
switch-lause voi täsmäyttää sealed-arvon jokaiseen alityyppiin kuvion avulla. Kukin haara näkee täsmällisen tyypin, johon se täsmäsi.
switch (shape) {
case Circle(): print('round');
case Square(): print('boxy');
}Kattavuus tarkistetaan
Jos unohdat jonkin alityypin, kääntäjä ilmoittaa virheestä. sealed-switchistä ei voi koskaan jäädä tapausta huomaamatta.
default-haaraa ei tarvita
Koska kaikki tapaukset on käsitelty, et tarvitse default-haaraa. Sen lisääminen vain peittäisi tulevaisuudessa unohtuneet tapaukset.
switch lausekkeena
Käytä switch-rakennetta lausekkeena laskeaksesi arvon suoraan. Kattavuusvaatimus on edelleen voimassa, joten jokaisen haaran on palautettava jotakin.
final name = switch (shape) {
Circle() => 'circle',
Square() => 'square',
};Uuden variantin lisääminen
Kun lisäät myöhemmin uuden alityypin, jokainen sen ohittava switch merkitään virheelliseksi. Kääntäjä ohjaa sinua päivittämään jokaisen niistä.
class Triangle extends Shape {}
// existing switches now errorsealed ja abstract
abstract-luokka sallii tuntemattomat alityypit luokan ulkopuolella, joten switchejä ei voi tarkistaa kattaviksi. Sealed sulkee joukon ja mahdollistaa täydellisen tarkistuksen.
Erinomainen tilojen mallintamiseen
Sealed-tyypit sopivat erinomaisesti sovelluksen tilojen, kuten Loading-, Success- ja Error-tilojen, mallintamiseen. Tällöin jokaiselle käyttöliittymähaaralle on varmasti vastine. ✅
sealed class Result {}
class Loading extends Result {}
class Done extends Result {}Pikatarkistus
Pikatarkistus sealed-tyyppien kattavuudesta.
Kertaus
Näet, että sealed-luokat sulkevat tyyppiperheen ja tekevät jokaisesta switch-rakenteesta kattavan, jolloin puuttuvista tapauksista tulee käännösaikaisia virheitä. 🎯
Opi Dart tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”sealed-luokat ja tyhjentävä switch” ilmainen?
Kyllä – oppitunnin ”sealed-luokat ja tyhjentävä switch” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Dart Academy-kurssin, päivitä CoddyKit PROhon. Dart Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”sealed-luokat ja tyhjentävä switch”?
Sulje luokkahierarkia, jonka kääntäjä voi tarkistaa Harjoittelet Dart Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Dart Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Dart Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”sealed-luokat ja tyhjentävä switch”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Dart Academy-oppitunnilla?
Kyllä. Jokainen Dart Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Final-kentät ja syvä muuttumattomuus
- sealed-luokat ja tyhjentävä switch
- base-, interface- ja final-määreet
- copyWith ja arvovertailu