ArraySlice-indeksien semantiikka
Ymmärrä, miksi osajoukon indeksit säilyttävät alkuperäiset sijaintinsa.
ArraySlice-indeksien semantiikka on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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 säilyttävät alkuperäiset indeksit
Tärkeä yllätys: ArraySlice ei indeksoi uudelleen nollasta. Se säilyttää samat indeksit, jotka sillä oli emotaulukossa.
let arr = [10, 20, 30, 40, 50]
let slice = arr[2..<5]
print(slice.startIndex)
print(slice.endIndex)startIndex ei ole aina nolla
Viipaleen startIndex vastaa sen muodostamiseen käytettyä alarajaa. Viipaleessa arr[2..<5] aloitusindeksi on 2.
let arr = [1, 2, 3, 4, 5, 6]
let slice = arr[3..<6]
print("start:", slice.startIndex)
print("first value:", slice[slice.startIndex])Viipaleen käyttäminen alaindeksinä
Koska indeksit säilyvät, teidän on käytettävä viipaleen omia indeksejä. Jos viipale alkaa indeksistä 2, slice[0]-alkion käyttäminen aiheuttaa ajonaikaisen kaatumisen.
let arr = [100, 200, 300, 400]
let slice = arr[2..<4]
print(slice[2])
print(slice[3])Käyttäkää startIndex-arvoa turvallisesti
Jos haluatte ensimmäisen alkion riippumatta viipaleen aloituskohdasta, käyttäkää slice.first- tai slice[slice.startIndex]-ilmaisua.
let arr = [5, 6, 7, 8, 9]
let slice = arr[2..<5]
print(slice.first ?? -1)
print(slice[slice.startIndex])endIndex on viimeistä seuraava indeksi
Kuten taulukoissa, endIndex osoittaa yhtä sijaintia viimeisen kelvollisen alkion jälkeen. Indeksointi kohdassa endIndex ei ole kelvollista.
let arr = [11, 22, 33, 44]
let slice = arr[1..<3]
print("endIndex:", slice.endIndex)
print("last valid:", slice[slice.endIndex - 1])Lukumäärä ja indeksointi
Viipaleen count on alkioiden lukumäärä, joka voi poiketa sen endIndex-arvosta. Älkää koskaan olettako, että count vastaa viimeistä indeksiä.
let arr = [0, 1, 2, 3, 4, 5]
let slice = arr[3..<6]
print("count:", slice.count)
print("startIndex:", slice.startIndex)Indices-ominaisuus
Käyttäkää indices-ominaisuutta iteroidaksenne turvallisesti viipaleen kelvollisten indeksien alueen läpi.
let arr = [10, 20, 30, 40, 50]
let slice = arr[1..<4]
for i in slice.indices {
print(i, slice[i])
}Miksi indeksit säilytetään
Indeksien säilyttäminen mahdollistaa viipaleessa olevan sijainnin yhdistämisen takaisin alkuperäiseen taulukkoon ilman erillistä kirjanpitoa. Löytämänne indeksi on kelvollinen myös emotaulukossa.
let arr = ["a", "b", "c", "d", "e"]
let slice = arr[2..<5]
if let idx = slice.firstIndex(of: "d") {
print("found at parent index:", idx)
print("parent has:", arr[idx])
}Enumerate aloittaa nollasta
Jos haluatte nollasta alkavat sijainnit, käyttäkää enumerated()-menetelmää. Se tuottaa nollasta alkavia siirtymiä viipaleen startIndex-arvosta riippumatta.
let arr = [9, 8, 7, 6, 5]
let slice = arr[2..<5]
for (offset, value) in slice.enumerated() {
print(offset, value)
}Etäisyys alusta
Laskeaksenne indeksistä nollasta alkavan siirtymän käyttäkää distance(from:to:)-menetelmää.
let arr = [1, 2, 3, 4, 5]
let slice = arr[2..<5]
let idx = slice.startIndex + 1
let offset = slice.distance(from: slice.startIndex, to: idx)
print("offset:", offset, "value:", slice[idx])Yleinen virhe
Sen unohtaminen, että viipaleet säilyttävät emotaulukon indeksit, on yksi Swiftin yleisimmistä virheistä. Suosikaa aina first-, enumerated()- tai startIndex-ratkaisua kovakoodatun 0:n sijaan.
let arr = [100, 200, 300, 400, 500]
let slice = arr[3..<5]
// Safe: use first, not slice[0]
print(slice.first ?? 0)Pikatarkistus
Päätelkää, miten viipaleiden indeksit toimivat.
Kertaus
ArraySlice säilyttää emotaulukon indeksit: sen startIndex on alaraja, ei nolla. Käyttäkää turvalliseen käsittelyyn first-, startIndex-, indices- tai enumerated()-ratkaisua, älkääkä koskaan kovakoodatko arvoa 0.
let slice = [5, 6, 7, 8, 9][3..<5]
print(slice.startIndex, slice.first ?? -1)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 ”ArraySlice-indeksien semantiikka” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “ArraySlice-indeksien semantiikka”. 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 ”ArraySlice-indeksien semantiikka”?
Ymmärrä, miksi osajoukon indeksit säilyttävät alkuperäiset sijaintinsa. 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 2/4.
Kuinka kauan ”ArraySlice-indeksien semantiikka”-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