Dart Academy · Oppitunti

sealed-luokat ja tyhjentävä switch

Sulje luokkahierarkia, jonka kääntäjä voi tarkistaa

Oppitunti 2/413 vaihetta

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(); // ok

Sealed-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 error

sealed 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ä. 🎯

Aloita maksutta

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

  1. Final-kentät ja syvä muuttumattomuus
  2. sealed-luokat ja tyhjentävä switch
  3. base-, interface- ja final-määreet
  4. copyWith ja arvovertailu
← Takaisin: Dart Academy