Il metodo enumerate
Fa parte della sezione Fondamenti del percorso Swift di Coddy. Lezione 70 di 86.
A volte, quando iteri su un array, devi conoscere non solo l’elemento, ma anche la sua posizione. Anche se potresti tenere traccia manualmente dell’indice con una variabile contatore, Swift offre una soluzione più semplice: il metodo enumerated().
Quando chiami enumerated() su un array, restituisce una sequenza di tuple, dove ogni tupla contiene l'indice e l'elemento:
let colors = ["Red", "Green", "Blue"]
for (index, color) in colors.enumerated() {
print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: BlueNota come scomponiamo ogni tupla direttamente nel ciclo usando (index, color). Questo ci dà accesso a entrambi i valori senza codice aggiuntivo.
Questo è particolarmente utile quando devi visualizzare elenchi numerati o eseguire operazioni che dipendono dalla posizione di un elemento:
let tasks = ["Wake up", "Exercise", "Eat breakfast"]
for (index, task) in tasks.enumerated() {
print("Task \(index + 1): \(task)")
}
// Attività 1: Svegliati
// Attività 2: Fai esercizio
// Attività 3: Fai colazioneIl metodo enumerated() mantiene il codice pulito e leggibile rispetto alla gestione manuale di una variabile contatore separata.
Sfida
FacileScrivi una funzione formatWithPositions che accetti items e restituisca una stringa formattata che mostri ogni elemento con il relativo numero di posizione.
Usa il metodo enumerated() per scorrere l'array e creare una stringa in cui ogni elemento è preceduto dal numero della sua posizione, a partire da 1.
Logica:
- Scorri l'array usando
enumerated() - Per ogni elemento, crea una stringa nel formato
"position. item"(usando una numerazione a partire da 1) - Unisci tutte le stringhe formattate con un carattere di nuova riga (
\n)
Parametri:
items([String]): un array di stringhe da formattare
Valore restituito: una singola stringa con ogni elemento su una riga separata, preceduto dal numero della sua posizione (String). Formato: "1. item1\n2. item2\n3. item3"
Esempio: se items è ["Apple", "Banana", "Cherry"], la funzione dovrebbe restituire:
"1. Apple\n2. Banana\n3. Cherry"Nota: se l'array è vuoto, restituisci una stringa vuota "".
Provalo tu
func formatWithPositions(items: [String]) -> String {
// Scrivi il codice qui
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori – Parte 1
Operatori aritmeticiOperatore moduloAssegnazione compostaRiepilogo - Matematica sempliceOperatori di confronto7I/O di base
Funzione printInterpolazione di stringheInput con ReadLineConversione di tipoRipasso - Fino a 120Ripasso - Vero o falso10Funzioni
Dichiarare una funzioneParametri e argomentiValori restituitiEtichette degli argomentiRiepilogo - Funzione SigmaRiepilogo - Funzione di validazioneValori predefiniti13Iterare sulle sequenze
Iterare sugli elementiIl metodo enumerateIterare sulle stringhe P1Iterare sulle stringhe P22Variabili
Let vs VarAnnotazioni di tipoNumeriStringaBooleanoConvenzioni di denominazioneRiepilogo - Inizializzare le variabili5Operatori Parte 2
Operatori logici Parte 1Operatori logici Parte 2Riepilogo - Logica sempliceOperatori logici Parte 3Operatore ternario8Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire i dati11FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz3Valori opzionali
Cosa sono i valori opzionaliEstrazione del valore con if letGuard letOperatore di coalescenza nilRiepilogo - Estrazione sicura del valore6Decisioni
Istruzione ifIf - ElseRipasso - Calcolatrice sempliceIstruzione switchSwitch con intervalli9Cicli
Ciclo for-inCiclo whileCiclo repeat-whileBreakContinueRipasso - FattorialeIntervalli nei cicliCiclo annidatoRipasso - Input dinamicoEsercitati da solo: Playground Swift