Geneeriset funktiot ja tyypit
Kirjoittakaa geneerisiä funktioita ja tyyppejä tyyppiparametrien (esim. ) avulla. Näkekää, miten kääntäjä päättelee tyypit ja pitää koodin turvallisena ja uudelleenkäytettävänä.
Geneeriset funktiot ja tyypit on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/3. 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ä 3 oppituntia.
Miksi geneerisiä tyyppejä?
Geneeristen tyyppien avulla voitte kirjoittaa yhden funktion tai tyypin, joka toimii monien tyyppien kanssa ja säilyttää samalla tyyppiturvallisuuden. Näette, miten <T> toimii tyyppiparametrina ja miten päättely tekee kutsuista yksinkertaisia.
Geneerinen funktio
Geneerinen funktio käyttää tyyppiparametria (<T>). Kääntäjä tarkistaa tyypit jokaisella kutsulla.
// Generic swap for any type T
func swapValues<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}
var x = 1, y = 2
swapValues(&x, &y)
print(x, y) // 2 1
var s1 = "A", s2 = "B"
swapValues(&s1, &s2)
print(s1, s2) // B AGeneerinen tyyppi
Myös tyypit voivat olla geneerisiä: määritelkää Stack<Element> ja käyttäkää sitä uudelleen Int-, String- ja muiden tyyppien kanssa.
// A minimal generic stack
struct Stack<Element> {
private var items: [Element] = []
mutating func push(_ x: Element) { items.append(x) }
mutating func pop() -> Element? { items.popLast() }
var top: Element? { items.last }
}
var intStack = Stack<Int>()
intStack.push(10); intStack.push(20)
print(intStack.top ?? -1) // 20
var textStack = Stack<String>()
textStack.push("hi"); textStack.push("bye")
print(textStack.pop() ?? "?")Tyyppien päättely
Swift usein päättelee geneeriset tyypit, joten niitä tarvitsee harvoin määrittää kutsuissa erikseen.
// The compiler infers T from arguments/assignments
func makePair<T>(_ a: T, _ b: T) -> (T, T) { (a, b) }
let pair1 = makePair(1, 2) // T inferred as Int
let pair2 = makePair("a", "b") // T inferred as String
print(pair1, pair2)Toiston välttäminen
Ilman geneerisiä tyyppejä koodi toistetaan jokaiselle tyypille erikseen. Geneeriset tyypit poistavat toistoa säilyttäen staattiset tarkistukset.
// Non-generic overloads would duplicate logic:
func eqInt(_ a: Int, _ b: Int) -> Bool { a == b }
func eqStr(_ a: String, _ b: String) -> Bool { a == b }
// A single generic can replace both:Huomautuksia ja nimeäminen
Huomautuksia:
- Käyttäkää selkeitä nimiä: T, Element tai toimialuekohtainen nimi.
- Pitäkää rajapinnat pieninä ja kohdennettuina.
- Seuraavaksi: lisätkää rajoitteita where-lauseella rajoittaaksenne T:tä tarvittaessa.
Merkinnän <T> merkitys
Pikatarkistus: Mitä <T> tarkoittaa geneerisessä funktiossa?
Kertaus
Kertaus: Määritelkää geneerisiä funktioita merkinnällä <T> ja luokaa geneerisiä tyyppejä, kuten Stack<Element>. Swift päättelee tyypit kutsuissa, joten koodi pysyy uudelleenkäytettävänä ja turvallisena.
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 ”Geneeriset funktiot ja tyypit” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Geneeriset funktiot ja tyypit”. 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ä 3 oppituntia.
Mitä opin oppitunnilla ”Geneeriset funktiot ja tyypit”?
Kirjoittakaa geneerisiä funktioita ja tyyppejä tyyppiparametrien (esim. ) avulla. Näkekää, miten kääntäjä päättelee tyypit ja pitää koodin turvallisena ja uudelleenkäytettävänä. 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 1/3.
Kuinka kauan ”Geneeriset funktiot ja tyypit”-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
- Geneeriset funktiot ja tyypit
- Rajoitteet (where) ja tyyppipäättely
- Geneeriset algoritmit kokoelmille