Ricerca facoltativa
Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 13 di 56.
I pedici dei dizionari restituiscono sempre un Optional: il valore quando la chiave esiste, nil quando non esiste. Swift ti obbliga a gestire entrambi i casi.
let prices: [String: Int] = ["apple": 1, "bread": 3]
let p = prices["apple"]
print(p) // Optional(1)Tre modi idiomatici per gestire l’opzionale. Scegli quello più adatto alla situazione.
1. if let: gestisci esplicitamente entrambi i rami:
if let p = prices["apple"] {
print("apple costs \(p)")
} else {
print("unknown")
}2. coalescenza nil ??: fornisce un valore di riserva inline:
let p = prices["olive"] ?? 0 // 03. pedice con valore predefinito: risultato identico, ma il valore predefinito rimane anche se riscrivi quella chiave:
var counts = ["a": 2]
counts["b", default: 0] += 1 // counts == ["a": 2, "b": 1]Sfida
FacileIl dizionario prices è dato. Leggi una singola riga di input: un elenco di articoli separati da virgole che l'utente desidera acquistare.
Per ogni articolo, nell'ordine di input, cercalo in prices. Stampa una riga per ogni articolo:
<item> @ <price>quando l'articolo è nel dizionario<item> not soldaltrimenti
Dopo aver elencato tutti gli articoli, stampa un'ultima riga: Total: <sum>. Considera che gli articoli mancanti costino 0 usando l'operatore nil-coalescing.
Per l'input apple,bread,olive,milk, l'output è:
apple @ 1
bread @ 3
olive not sold
milk @ 4
Total: 8Provalo tu
let prices: [String: Int] = ["apple": 1, "bread": 3, "milk": 4]
let items = readLine()!.components(separatedBy: ",")
// TODO: cerca ogni articolo; stampa '@ price' o 'not sold'; calcola la somma con ?? 0
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Conteggio e indiciMaiuscole, minuscole e rimozione degli spaziRicerca nelle stringheSuddivisione e unioneSostituzione di sottostringheRiepilogo - Verifica del nome utente4Insiemi
Creare insiemiUnione e intersezioneDifferenza e differenza simmetricaSottoinsieme e sovrainsiemeRiepilogo - Filtro per tag7Progetto - Tracciatore di abitudini
Panoramica del progettoSegna come completato10Progetto - Motore di quiz
Panoramica del progettoPorre domande2Intervalli e passi
Intervalli chiusi e semiapertiPassoMetodi degli intervalliIntervalli in switchRiepilogo - Griglia del calendario5Funzioni di ordine superiore Parte 1
MapFilterReduceConcatenare map, filter e reduceRiepilogo - Statistiche sulle parole3Dizionari
Dichiarare i dizionariRicerca facoltativaAggiornare i dizionariIterare sui dizionariRaggruppare i valoriRipasso - Inventario6Funzioni di ordine superiore Parte 2
compactMapflatMapsorted(by:)Creare pipelineRiepilogo - ClassificaEsercitati da solo: Playground Swift