Osajoukkojen muuntaminen takaisin taulukoiksi
Muodosta osajoukosta itsenäinen taulukko.
Osajoukkojen muuntaminen takaisin taulukoiksi on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/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.
Viipaleet eivät ole taulukoita
ArraySlice on eri tyyppi kuin Array. Monet ohjelmointirajapinnat odottavat nimenomaan Array-tyyppiä, joten viipale on usein muunnettava.
let original = [1, 2, 3, 4, 5]
let slice = original[1..<4]
print(type(of: slice))Array(slice)
Käärikää viipale Array(...)-alkustajaan, jotta saatte uuden, itsenäisen taulukon, jonka alkiot on kopioitu ja indeksit alkavat nollasta.
let original = [10, 20, 30, 40, 50]
let slice = original[2..<5]
let array = Array(slice)
print(array)
print(type(of: array))Indeksit palautuvat nollaan
Muunnettu uusi taulukko indeksoidaan nollasta, toisin kuin viipale, joka säilytti emotaulukon indeksit.
let original = [1, 2, 3, 4, 5]
let slice = original[3..<5]
let copy = Array(slice)
print("slice start:", slice.startIndex)
print("array start:", copy.startIndex)Muuntaminen kopioi tallennustilan
Muuntaminen pakottaa kopioinnin. Uusi taulukko ei enää jaa tallennustilaa emotaulukon kanssa, joten sen muokkaaminen ei vaikuta alkuperäiseen taulukkoon.
let original = [1, 2, 3, 4]
var copy = Array(original[1..<3])
copy[0] = 999
print("original:", original)
print("copy:", copy)Taulukoiden palauttaminen funktioista
Kun funktio palauttaa osan taulukosta, muuttakaa viipale taulukoksi, jotta kutsuja saa tavallisen Array-taulukon.
func firstThree(of nums: [Int]) -> [Int] {
return Array(nums.prefix(3))
}
print(firstThree(of: [9, 8, 7, 6, 5]))Taulukkoparametreille välittäminen
Jos ohjelmointirajapinnan parametrin tyyppi on [Int], viipale on muunnettava ennen sen välittämistä.
func total(_ values: [Int]) -> Int {
return values.reduce(0, +)
}
let data = [1, 2, 3, 4, 5]
let result = total(Array(data[1..<4]))
print(result)Milloin muuntamista ei tarvita
Jos funktio vastaanottaa geneerisen Sequence- tai Collection-tyypin, voitte välittää slicen suoraan ilman muuntamista.
func describe<S: Sequence>(_ s: S) where S.Element == Int {
print(Array(s))
}
let arr = [2, 4, 6, 8]
describe(arr[1..<3])Muistinkäytön kompromissi
Slicet välttävät kopioinnit ja pitävät emon tallennustilan käytössä. Jos pidätte pientä slicea valtavasta taulukosta pitkään, muuntakaa se taulukoksi, jotta suuri puskuri voidaan vapauttaa.
let huge = Array(1...1000)
let keep = Array(huge[0..<3]) // small independent copy
print(keep)Setiksi muuntaminen
Voitte välittää slicen myös muihin kokoelman alustajiin, kuten Set-alustajaan.
let arr = [1, 2, 2, 3, 3, 3]
let uniqueTail = Set(arr[2..<6])
print(uniqueTail.sorted())Edestakainen muunnos
Slicen ottaminen, muuntaminen ja slicen ottaminen uudelleen on täysin sallittua. Jokainen muunnos on eksplisiittinen ja ennakoitava.
let arr = [10, 20, 30, 40, 50]
let a = Array(arr[1..<4])
let b = Array(a[0..<2])
print(a)
print(b)Hyvä käytäntö
Työskennelkää slicejen kanssa laskennan aikana ja muuntakaa ne Array-taulukoksi vasta rajapinnalla, jossa tallennatte tai palautatte tuloksen.
let arr = [3, 1, 4, 1, 5, 9, 2]
let top3 = Array(arr.sorted(by: >)[0..<3])
print(top3)Pikatarkistus
Testatkaa slicen muuntamista.
Kertaus
Käyttäkää Array(slice)-kutsua muuntaaksenne ArraySlice-tyypin itsenäiseksi taulukoksi, jolla on nollasta alkavat indeksit ja kopioitu tallennustila. Muuntakaa rajapinnoilla ja pitäkää slicet laskennan aikana ylimääräisten kopiointien välttämiseksi.
let s = [1, 2, 3, 4, 5][2..<5]
let a = Array(s)
print(a, a.startIndex)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 ”Osajoukkojen muuntaminen takaisin taulukoiksi” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Osajoukkojen muuntaminen takaisin taulukoiksi”. 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 ”Osajoukkojen muuntaminen takaisin taulukoiksi”?
Muodosta osajoukosta itsenäinen taulukko. 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 3/4.
Kuinka kauan ”Osajoukkojen muuntaminen takaisin taulukoiksi”-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
- Osajoukkojen luominen alueilla
- ArraySlice-indeksien semantiikka
- Osajoukkojen muuntaminen takaisin taulukoiksi
- prefix, suffix ja dropFirst