Dart Academy · Oppitunti

Geneeriset luokat ja metodit

Parametrisoi omat tyyppisi

Oppitunti 2/413 vaihetta

Geneeriset luokat ja metodit 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.

Omat geneeriset tyypit

Listin kaltaiset sisäänrakennetut tyypit ovat geneerisiä, ja voitte kirjoittaa myös omia geneerisiä tyyppejä. Tyyppiparametrin avulla luokka voi mukautua mihin tahansa kutsujan valitsemaan tyyppiin. 🧩

Tyyppiparametrin nimeäminen

Lisäätte tyyppiparametrin kulmasulkeisiin luokan nimen jälkeen. Kirjain T on yleinen paikanhaltija, joka edustaa todellista tyyppiä.

class Box<T> {
  T value;
  Box(this.value);
}

T:n käyttäminen luokan sisällä

Luokan sisällä T toimii kuten mikä tahansa tyypin nimi. Voitte käyttää sitä kentissä, parametreissa ja palautusarvoissa kaikkialla luokan rungossa.

class Box<T> {
  T value;
  Box(this.value);
  T get() => value;
}

Tyypin määrittäminen

Kun luotte olion, valitsette todellisen tyypin. Tässä T:stä tulee int, joten tämä säilö sisältää aina vain kokonaislukuja.

var b = Box<int>(42);
int n = b.get();

Antakaa Dartin päätellä tyyppi

Usein voitte jättää tyypin ilmoittamatta, koska Dart lukee sen argumentista. Tyypin päättely havaitsee String-tyypin ja asettaa T:n puolestanne.

var b = Box('hi');

Useita tyyppiparametreja

Luokka voi vastaanottaa useamman kuin yhden tyyppiparametrin, jotka erotetaan pilkuilla. Kahden eri tyypin pari on klassinen esimerkki.

class Pair<A, B> {
  A first;
  B second;
  Pair(this.first, this.second);
}

Geneeriset metodit

Voitte tehdä yksittäisestä metodista geneerisen myös ei-geneerisessä luokassa. Sijoittakaa tyyppiparametri juuri ennen parametriluetteloa.

T firstOf<T>(List<T> items) => items[0];

Metoditkin päättelevät tyypin

Geneerinen metodi päättelee yleensä tyyppinsä sille välitetyistä argumenteista. Kutsukaa metodia tavalliseen tapaan, niin Dart selvittää loput.

var n = firstOf([1, 2, 3]);
var s = firstOf(['a', 'b']);

Tyypitysturvallisuus palaa

Koska metodi seuraa T-tyyppiä, tuloksella säilyy oikea tyyppi. String-listalle kutsuttu firstOf palauttaa String-arvon ilman tyyppimuunnosta.

String x = firstOf(['a', 'b']);

Uudelleenkäytettävä, ei toisteinen

Yksi geneerinen määritelmä korvaa useita kopioituja versioita. Kirjoitatte logiikan kerran, ja se toimii yhtä lailla int-, String- kuin omien tyyppienne kanssa.

Valitkaa selkeät nimet

Yksikirjaimiset nimet, kuten T, E ja K, ovat tavanomaisia, mutta kuvaava nimi voi auttaa. Monimutkaisessa koodissa selkeys on tärkeämpää kuin lyhyys.

Pikatarkistus

Mihin tyyppiparametri sijoitetaan luokassa?

Kertaus

Opitte lisäämään omiin luokkiinne ja metodeihinne tyyppiparametrin, kuten T:n. Dart täyttää sen usein tyypin päättelyn avulla, joten koodi pysyy uudelleenkäytettävänä ja turvallisena. ✅

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 ”Geneeriset luokat ja metodit” ilmainen?

Kyllä – oppitunnin ”Geneeriset luokat ja metodit” 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 ”Geneeriset luokat ja metodit”?

Parametrisoi omat tyyppisi 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 ”Geneeriset luokat ja metodit”-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. Miksi geneeriset tyypit päihittävät dynamic-tyypin
  2. Geneeriset luokat ja metodit
  3. Rajoitetut tyyppiparametrit extends-avainsanalla
  4. Geneeriset kokoelmat käytännössä
← Takaisin: Dart Academy