0Pricing
Swift Academy · Lezione

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 hop

Dizionario

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 items

Subscript

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.

Collezioni — illustrazione 22

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.

← Torna a Swift Academy