Collezioni
Collezioni
Collezioni è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 1. 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 1 lezioni in totale.
Introduzione
Salve,
In questa lezione impareremo a conoscere i tipi di collezione in Swift, uno degli argomenti più importanti.
Iniziamo.
In Swift esistono 3 tipi di collezione.
Array → Tipi di collezione sequenziali.
Set → Tipi di collezione non ordinati e con elementi univoci.
Dictionary → Tipi di collezione non ordinati e organizzati in coppie chiave-valore.
Mutabile - immutabile
La mutabilità o immutabilità dei tipi di collezione dipende dalla definizione che utilizziamo.
Se lo definiamo con un'istruzione let, sarà immutabile, mentre sarà mutabile se lo definiamo con var.
Se il valore definito non cambierà in seguito, l'utilizzo di let offrirà un vantaggio in termini di prestazioni, consentendo al compilatore di eseguire un'ottimizzazione maggiore.
Array
Array
Array è il tipo di collezione utilizzato per mantenere i dati in sequenza. A partire dalla versione 3 di Swift, non è necessario che tutti gli elementi di un array siano dello stesso tipo.
La sintassi per una semplice definizione di Array è mostrata nell'esempio seguente.
// Let's create an empty array.
var someInts = [Int]()
print("someInts is of type [Int] with \(someInts.count) items.")
// Prints "someInts is of type [Int] with 0 items."Creare un array con un valore predefinito
Creare un array con un valore predefinito
In alcuni casi potremmo voler creare un array con un valore predefinito e una dimensione specifica. A questo scopo, dobbiamo passare due argomenti al costruttore Array.
Questi argomenti specificano qual è il valore predefinito e quanti elementi conterrà l’array.
var threeDoubles = Array(repeating: 0.0, count: 3)
print(threeDoubles)
// threeDoubles is of type [Double], and equals [0.0, 0.0, 0.0]
var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
// anotherThreeDoubles is of type [Double], and equals [2.5, 2.5, 2.5]
print(anotherThreeDoubles)
var sixDoubles = threeDoubles + anotherThreeDoubles
print(sixDoubles)
// sixDoubles is inferred as [Double], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]Creare un Array utilizzando un Array Literal
Creare un Array utilizzando un Array Literal
Nell'esempio precedente abbiamo imparato a creare un Array vuoto. Tuttavia, in alcuni casi potremmo voler creare un Array con un Array Literal.
Impariamo a utilizzarlo con un esempio.
/*
We have defined a variable named catList,
and with the [String] statement we specified
that its type is an Array containing String elements.
*/
var catList: [String] = ["Garfield", "Tom"]
print(catList)
/*
It will understand that the array is an Array containing
String statements, since we assign a value that
defines the variable. (Swift type inference)
*/
var shoppingList = ["Eggs", "Milk"]
print(shoppingList)Accedere al valore di un array
Accedere al valore di un array
Quando vogliamo raggiungere l'elemento situato a un determinato indice in una sequenza, è sufficiente richiamarlo con la sintassi seguente.
myArray [index]
Vediamo l'esempio.
// We have defined an array with 3 elements of type Int.
var numbers:[Int] = [1, 5, 21]
// Arrays start from Index 0. For example, in order to reach the value 5, which is the 2nd element, we need to access the 1st index.
var a = numbers[1]
print( "Value of numbers at index 1 is \(a)" )Aggiungere nuovi elementi a un Array
Aggiungere nuovi elementi a un Array
Possiamo aggiungere un nuovo elemento a un Array.
Nell'esempio seguente viene definito un Array denominato catList. Nel passaggio successivo, a questo Array viene aggiunto un nuovo elemento con il metodo append.
// The Array named catList was defined with 1 initial element.
var catList = ["Tom"]
/*
We are adding a new item with a Garfield
value using the append method.
*/
catList.append("Garfield")
// Our array will now have 2 elements.
/*
With the + = operator, we can do the
work that the append method does.
*/
catList += ["Sylvester"]
Aggiungere dati a un indice specifico dell'array
Aggiungere dati a un indice specifico dell'array
Il valore aggiunto con il metodo append nell'esempio precedente verrà inserito alla fine dell'array. Tuttavia, a volte potremmo volerlo aggiungere a un indice specifico. A questo scopo utilizzeremo il metodo insert.
La sintassi sarà simile alla seguente.
myArr.insert ("The data to add", at: index);
Scopriamolo con un esempio.
var catList = ["Tom"]
catList.insert("Garfield", at: 1)
print(catList)
Eliminare un elemento specifico dall'array
Eliminare un elemento specifico dall'array
Il metodo remove viene utilizzato per eliminare un elemento situato a un determinato indice di un array.
var shoppingList = ["Apple", "Cherry", "Cheese"]
let shoppingListOne = shoppingList.remove(at: 0)
// the item that was at index 0 has just been removed
// the mapleSyrup constant is now equal to the removed "Maple Syrup" string
let shoppingListTwo = shoppingList.removeLast()
// the last item in the array has just been removed
print(shoppingListTwo)Iterazione di un array
Possiamo iterare un array che abbiamo usando il for-in.
Diamo un'occhiata all'esempio.
var shoppingList = ["Banana", "Orange", "Milk"]
for item in shoppingList {
print(item)
}
// Six eggs
// Milk
// Flour
// Baking Powder
// Bananas
for (index, value) in shoppingList.enumerated() {
print("Item \(index + 1): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas
Insiemi
Insiemi
Utilizzati per mantenere insieme raccolte dello stesso tipo senza un ordine.
Come si può capire dal nome, sono insiemi. In un insieme non possono esserci due elementi con lo stesso valore.
Creazione di un insieme vuoto
Usiamo il seguente esempio per creare un insieme vuoto.
var catSet = Set<Character>()Creazione di insiemi usando un array literal
Creazione di insiemi usando un array literal
Un array literal può essere utilizzato per creare un set. Si noti che, sebbene il valore assegnato qui sembri un array, il tipo della variabile è Set <String>.
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]Avvertenza
Usando un array literal, non è possibile creare un set senza definire un tipo. Potrebbe interferire con Array. Pertanto, è necessario definire il tipo.
Come minimo, dovrebbe essere utilizzato nel modo seguente.
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]Metodi di Set
Metodi di Set
Diamo un'occhiata all'esempio
var favoriteGenres = ["Funk"]
print("I have \(favoriteGenres.count) favorite music genres.")
if favoriteGenres.isEmpty {
print("favoriteGenres is empty")
} else {
print("I have particular music preferences.")
}
if favoriteGenres.contains("Funk") {
print("Funk")
} Iterazione del Set
Iterazione del Set
Il tipo Set di Swift non ha un ordinamento. Tuttavia, durante l'iterazione sul valore del set è possibile utilizzare il metodo sorted. Questo metodo restituisce gli elementi del set come array.
let favoriteGenres = ["Classical","Jazz", "Hip hop"]
for genre in favoriteGenres {
print("\(genre)")
}
// Classical
// Jazz
// Hip hopDizionario
Dizionario
Sono tipi di raccolta che memorizzano i valori del dizionario come coppie chiave-valore e non mantengono alcun ordine.
Ogni valore viene memorizzato con una chiave univoca. Questa rappresenta l'ID di quel valore nel dizionario. Non mantiene un ordine come gli array. Possiamo immaginarlo come un dizionario del mondo reale.
Pertanto, l'identità di ogni valore è più importante dell'ordine.
Il tipo Dictionary può essere definito con il tipo abbreviato [Key: Value]. L'uso della forma abbreviata è quello preferito.
var namesOfIntegers = [Int: String]()
// namesOfIntegers is an empty [Int: String] dictionary
namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type [Int: String]Metodi di accesso a un dizionario
Possiamo scoprire quanti elementi contiene un dizionario con il metodo count.
Inoltre, possiamo verificare se il dizionario è vuoto con il metodo isEmpty.
Facciamo alcuni esempi di questi metodi.
var airports = ["LHR": "London", "IST": "Istanbul"]
print("The airports dictionary contains \(airports.count) items.")
// Prints "The airports dictionary contains 2 items."
if airports.isEmpty {
print("The airports dictionary is empty.")
} else {
print("The airports dictionary is not empty.")
}
// Prints "The airports dictionary is not empty."
airports["LHR"] = "London"
// the airports dictionary now contains 3 itemsSubscript
L'operazione per ottenere un valore tramite subscript è la seguente. Il risultato restituito è opzionale.
var airports = ["DUB":"Dublin"]
if let airportName = airports["DUB"] {
print("The name of the airport is \(airportName).")
} else {
print("That airport is not in the airports dictionary.")
}
// Prints "The name of the airport is Dublin Airport."
//Deletion
airports["APL"] = nil
if let removedValue = airports.removeValue(forKey: "DUB") {
print("The removed airport's name is \(removedValue).")
} else {
print("The airports dictionary does not contain a value for DUB.")
}
// Prints "The removed airport's name is Dublin Airport."
Aggiornamento di un dizionario
Oltre a utilizzare il subscript sopra, esiste un metodo per aggiornare il dizionario.
La caratteristica di questo metodo è che, una volta completato l'aggiornamento, restituisce il valore precedente.
var airports = ["DUB": "Dublin"]
if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
print("The old value for DUB was \(oldValue).")
}
// Prints "The old value for DUB was Dublin."
Esempio di conversione da Dictionary ad Array
Di seguito è riportato un esempio di conversione da Dictionary ad Array.
let airports = ["IST":"Istanbul Airport", "DUB":"Dublin Airport"]
let airportCodes = [String](airports.keys)
print(airportCodes)
let airportNames = [String](airports.values)
print(airportNames)Congratulazioni
Congratulazioni 🎉
In questa lezione abbiamo imparato come utilizzare le collezioni in Swift.
Ci vediamo nella prossima lezione.

Domande Frequenti
La lezione «Collezioni» è gratuita?
Sì — il testo completo di «Collezioni» è 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 1 lezioni in totale.
Cosa imparerò in «Collezioni»?
Collezioni 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 1 di 1.
Quanto tempo richiede la lezione «Collezioni»?
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.