Swift Academy · Oppitunti

ArraySlice-indeksien semantiikka

Ymmärrä, miksi osajoukon indeksit säilyttävät alkuperäiset sijaintinsa.

Oppitunti 2/413 vaihetta

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)
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 ”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

  1. Osajoukkojen luominen alueilla
  2. ArraySlice-indeksien semantiikka
  3. Osajoukkojen muuntaminen takaisin taulukoiksi
  4. prefix, suffix ja dropFirst
← Takaisin: Swift Academy