Swift Academy · Oppitunti

Päättely sulkeumissa

Ymmärrä parametrien ja paluuarvojen päättely sulkeumissa.

Oppitunti 4/413 vaihetta

Päättely sulkeumissa on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Closuret päättelevät tyypit

Monissa asiayhteyksissä closure voi päätellä sekä parametriensa että palautusarvonsa tyypit käyttötapansa perusteella.

let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled)

Parametrin päätelty tyyppi

Kun välitätte closuren map-metodille, alkion tyyppi kertoo Swiftille, mikä $0 on, joten parametrin tyyppiä ei tarvitse ilmoittaa.

let names = ["ada", "bob"]
let upper = names.map { $0.uppercased() }
print(upper)

Päätelty palautustyyppi

Cl osuren runko määrittää sen palautustyypin. Bool-arvon palauttaminen tekee closuresta predikaatin.

let nums = [1, 2, 3, 4, 5]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)

Lyhennetyt argumenttinimet

$0, $1 ja niin edelleen viittaavat closure-argumentteihin niiden sijainnin perusteella, kun niiden tyypit päätellään.

let sums = zip([1, 2, 3], [10, 20, 30]).map { $0 + $1 }
print(Array(sums))

Eksplisiittiset parametrit tarvittaessa

Voitte silti nimetä parametrit ja määrittää niiden tyypit, jos se parantaa selkeyttä.

let nums = [3, 1, 2]
let sorted = nums.sorted { (a: Int, b: Int) -> Bool in
    return a < b
}
print(sorted)

Päättely asiayhteydestä

Jos sijoitatte closuren tyypitettyyn muuttujaan, muuttujan tyyppi kertoo closurelle sen signaturen.

let add: (Int, Int) -> Int = { a, b in a + b }
print(add(2, 3))

Trailing closure

Trailing closure -syntaksi säilyttää tyyppipäättelyn ja tekee kutsukohdista samalla luettavampia.

let result = [5, 3, 8, 1].sorted { $0 > $1 }
print(result)

Päättely reducella

reduce-kutsussa kertymän ja alkion tyypit päätellään alkuarvosta ja sekvenssistä.

let total = [1, 2, 3, 4].reduce(0) { acc, x in acc + x }
print(total)

Palauttaminen closuresta

Yhden lausekkeen closuresta voi jättää return-avainsanan pois; lausekkeen arvo palautetaan ja sen tyyppi päätellään.

let lengths = ["hi", "hello", "hey"].map { $0.count }
print(lengths)

Tyyppimäärityksellä varustettu closure-muuttuja

Kun closure tallennetaan ilman välitöntä kutsua, määrittäkää closuren tyyppi, jotta Swift voi päätellä rungon tyypin.

let transform: (String) -> Int = { $0.count }
print(transform("swift"))

Milloin tyyppi on määritettävä

Jos ympäröivä asiayhteys ei anna tietoa tyypistä, Swift ei voi päätellä closuren parametreja, joten teidän on määritettävä ne.

let isPositive: (Int) -> Bool = { n in n > 0 }
print(isPositive(5), isPositive(-3))

Pikatarkistus

Testatkaa closurejen tyyppipäättelyä.

Kertaus

Closurejen parametri- ja palautustyypit päätellään asiayhteydestä, kuten map- ja filter-kutsuista tai tyypitetystä muuttujasta. Käyttäkää lyhenteitä $0 ja $1, kun tyypit voidaan päätellä, ja lisätkää tyyppimääritykset eksplisiittisesti, kun asiayhteys puuttuu.

let f: (Int) -> Int = { $0 + 1 }
let xs = [1, 2, 3].map { $0 * 10 }
print(f(9), xs)
Aloita maksutta

Opi Swift 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
122
Oppitunnit
409

Usein kysytyt kysymykset

Onko oppitunti ”Päättely sulkeumissa” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Päättely sulkeumissa”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Päättely sulkeumissa”?

Ymmärrä parametrien ja paluuarvojen päättely sulkeumissa. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Päättely sulkeumissa”-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ä Swift Academy-oppitunnilla?

Kyllä. Jokainen Swift 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. Tyypin päättelyn toiminta
  2. Milloin eksplisiittisiä annotaatioita tarvitaan
  3. Päättely literaaleista
  4. Päättely sulkeumissa
← Takaisin: Swift Academy