fold, reduce ja expand
Kokoa ja litistä iteroitavia
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); // 10reduce 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); // 9Tyhjä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); // 6fold 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); // 123fold 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); // 0reduce 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); // 6Pikatarkistus
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. 🎉
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
- Korkeamman kertaluvun funktiot ja currying
- fold, reduce ja expand
- Laiskat iteroitavat ja generaattorit sync*:lla
- Puhtaiden funktioputkien koostaminen