Dart Academy · Oppitunti

fold, reduce ja expand

Kokoa ja litistä iteroitavia

Oppitunti 2/413 vaihetta

fold, reduce ja expand 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.

Kokoelman yhdistäminen

Usein haluatte tiivistää kokonaisen listan yhdeksi arvoksi, kuten summaksi tai maksimiarvoksi. Dart tarjoaa juuri tähän fold- ja reduce-metodit. 🧮

Tutustutaan reduceen

reduce yhdistää alkiot pareittain käyttämällä määrittämäänne funktiota. Se aloittaa ensimmäisestä alkiosta, joten lista ei saa olla tyhjä.

var sum = [1, 2, 3, 4].reduce((a, b) => a + b);
print(sum); // 10

reduce kuljettaa tulosta mukanaan

Jokainen vaihe saa käsiteltäväkseen siihenastisen tuloksen ja seuraavan alkion. Ajatelkaa a:ta kertymänä, joka kasvaa käsittelyn edetessä.

var max = [3, 9, 2].reduce((a, b) => a > b ? a : b);
print(max); // 9

Tyhjän listan ansa

reducen kutsuminen tyhjälle listalle aiheuttaa StateError-virheen. Kun lista saattaa olla tyhjä, käyttäkää sen sijaan foldia.

Tutustutaan foldiin

fold muistuttaa reducea, mutta sille annetaan aloitusarvo. Tämä lähtöarvo määrittää tulostyypin ja käsittelee tyhjät listat turvallisesti.

var total = [1, 2, 3].fold(0, (a, b) => a + b);
print(total); // 6

fold voi vaihtaa tyyppiä

Koska lähtöarvo määrittää tyypin, fold voi muuttaa int-listan Stringiksi, Mapiksi tai miksi tahansa tarvitsemaksenne tyypiksi.

var joined = [1, 2, 3].fold('', (a, b) => '$a$b');
print(joined); // 123

fold toimii turvallisesti tyhjällä listalla

Tyhjällä listalla fold palauttaa yksinkertaisesti lähtöarvon. Kaatumista tai muistettavaa erikoistapausta ei ole.

var s = <int>[].fold(0, (a, b) => a + b);
print(s); // 0

reduce vai fold

Käyttäkää reducea nopeaan samantyyppiseen yhdistämiseen, kun lista ei ole tyhjä. Valitkaa fold, kun tarvitsette lähtöarvon tai uuden tulostyypin.

Tutustutaan expandiin

expand muuntaa jokaisen alkion iteroitavaksi kokoelmaksi ja litistää ne sitten yhdeksi arvojen virraksi. Se on mapin ja litistyksen yhdistelmä.

var r = [1, 2].expand((n) => [n, n * 10]);
print(r.toList()); // [1, 10, 2, 20]

Sisäkkäisten listojen litistäminen

expand-metodia käytetään usein listalistojen muuttamiseen yhdeksi litteäksi listaksi yhdellä selkeällä kutsulla.

var flat = [[1, 2], [3, 4]].expand((x) => x);
print(flat.toList()); // [1, 2, 3, 4]

Kolmen metodin ketjuttaminen

Nämä metodit toimivat erinomaisesti yhdessä. Voitte litistää datan expandilla ja koota tuloksen sitten foldilla yhdeksi selkeäksi käsittelyputkeksi.

var t = [[1, 2], [3]].expand((x) => x).fold(0, (a, b) => a + b);
print(t); // 6

Pikatarkistus

Valitkaa oikea työkalu tyhjän listan turvallisesti käsittelevään summaan.

Kertaus

reduce yhdistää alkiot, fold yhdistää ne lähtöarvon avulla ja expand litistää rakenteen. Yhdessä ne kokoavat minkä tahansa kokoelman helposti. 🎉

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 ”fold, reduce ja expand” ilmainen?

Kyllä – oppitunnin ”fold, reduce ja expand” 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 ”fold, reduce ja expand”?

Kokoa ja litistä iteroitavia 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 ”fold, reduce ja expand”-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. Korkeamman kertaluvun funktiot ja currying
  2. fold, reduce ja expand
  3. Laiskat iteroitavat ja generaattorit sync*:lla
  4. Puhtaiden funktioputkien koostaminen
← Takaisin: Dart Academy