Menu
Coddy logo textTech

Map

Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 23 di 56.

map accetta una closure e la applica a ogni elemento, restituendo un nuovo array dei risultati. Il nuovo array ha la stessa lunghezza dell'array di origine.

let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled)               // [2, 4, 6, 8]

$0 è una forma abbreviata per il primo parametro della closure. La forma più lunga specifica il nome del parametro e il tipo restituito:

let doubled = nums.map { (n: Int) -> Int in
    return n * 2
}

map può anche cambiare il tipo di elemento. Applicando una trasformazione a un [Int] tramite una closure che restituisce String, ottieni un [String]:

let labels = nums.map { "#\($0)" }
print(labels)                // ["#1", "#2", "#3", "#4"]
challenge icon

Sfida

Facile

Leggi una singola riga di input: un elenco di numeri interi separati da virgole (temperature in Fahrenheit).

Converti ciascuna temperatura in Celsius usando la formula C = (F - 32) * 5 / 9 con aritmetica intera (tronca verso zero, senza decimali). Stampa, su righe separate:

  1. Le temperature in Celsius, unite con ,
  2. Un'etichetta per ogni temperatura con il prefisso F=<f> C=<c>, unite con ;

Usa map per entrambe le righe.

Per l'input 32,212,98,0, l'output è:

0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17

Provalo tu

let f = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: riga 1 = valori celsius uniti con ","
// TODO: riga 2 = etichette "F=<f> C=<c>" unite con ";"
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Swift