Swift Academy · Lezione

Conversione degli slice in array

Converti uno slice in un array indipendente.

Lezione 3 di 413 passaggi

Conversione degli slice in array è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Le slice non sono array

Una ArraySlice è un tipo distinto da Array. Molte API richiedono un Array concreto, quindi spesso è necessario effettuare una conversione.

let original = [1, 2, 3, 4, 5]
let slice = original[1..<4]
print(type(of: slice))

Array(slice)

Racchiuda una slice nell'inizializzatore Array(...) per creare un array nuovo e indipendente, con elementi copiati e indici a partire da zero.

let original = [10, 20, 30, 40, 50]
let slice = original[2..<5]
let array = Array(slice)
print(array)
print(type(of: array))

Gli indici ripartono da zero

Dopo la conversione, il nuovo array ricomincia l'indicizzazione da 0, a differenza della slice, che conservava gli indici dell'array principale.

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)

La conversione copia lo spazio di archiviazione

La conversione forza una copia. Il nuovo array non condivide più lo spazio di archiviazione con l'array principale, quindi modificarlo non influisce sull'originale.

let original = [1, 2, 3, 4]
var copy = Array(original[1..<3])
copy[0] = 999
print("original:", original)
print("copy:", copy)

Restituire array dalle funzioni

Quando una funzione restituisce una parte di un array, converta la slice in modo che chi la chiama riceva un normale Array.

func firstThree(of nums: [Int]) -> [Int] {
    return Array(nums.prefix(3))
}
print(firstThree(of: [9, 8, 7, 6, 5]))

Passare a parametri di tipo Array

Se un parametro di un'API è tipizzato come [Int], deve convertire una slice prima di passarla.

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)

Quando la conversione non è necessaria

Se la Sua funzione accetta una Sequence o una Collection generica, può passare direttamente lo slice senza effettuare conversioni.

func describe<S: Sequence>(_ s: S) where S.Element == Int {
    print(Array(s))
}
let arr = [2, 4, 6, 8]
describe(arr[1..<3])

Compromesso di memoria

Gli slice evitano le copie e mantengono in vita lo storage dell'array originale. Se conserva a lungo un piccolo slice di un array enorme, lo converta in un array, così il buffer di grandi dimensioni può essere liberato.

let huge = Array(1...1000)
let keep = Array(huge[0..<3]) // small independent copy
print(keep)

Conversione in un Set

Può anche passare uno slice ad altri inizializzatori di raccolte, come Set.

let arr = [1, 2, 2, 3, 3, 3]
let uniqueTail = Set(arr[2..<6])
print(uniqueTail.sorted())

Andata e ritorno

È perfettamente corretto creare uno slice, convertirlo e poi creare nuovamente uno slice. Ogni conversione è esplicita e prevedibile.

let arr = [10, 20, 30, 40, 50]
let a = Array(arr[1..<4])
let b = Array(a[0..<2])
print(a)
print(b)

Buona pratica

Continui a lavorare con gli slice durante i calcoli e li converta in Array solo al confine in cui salva o restituisce il risultato.

let arr = [3, 1, 4, 1, 5, 9, 2]
let top3 = Array(arr.sorted(by: >)[0..<3])
print(top3)

Verifica rapida

Provi la conversione degli slice.

Riepilogo

Utilizzi Array(slice) per trasformare un ArraySlice in un array indipendente con indici a base zero e storage copiato. Esegua la conversione ai confini dell'API e mantenga gli slice durante i calcoli per evitare copie aggiuntive.

let s = [1, 2, 3, 4, 5][2..<5]
let a = Array(s)
print(a, a.startIndex)
Gratis per iniziare

Impara Swift con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
122
Lezioni
409

Domande Frequenti

La lezione «Conversione degli slice in array» è gratuita?

Sì — il testo completo di «Conversione degli slice in array» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «Conversione degli slice in array»?

Converti uno slice in un array indipendente. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Conversione degli slice in array»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Creazione di slice con gli intervalli
  2. Semantica degli indici di ArraySlice
  3. Conversione degli slice in array
  4. prefix, suffix e dropFirst
← Torna a Swift Academy