Déclarer des dictionnaires
Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 12 sur 56.
Un dictionnaire est une collection non ordonnée de paires clé/valeur. Le type de la clé et le type de la valeur sont tous deux fixés lors de sa création.
var prices: [String: Int] = [
"apple": 1,
"bread": 3,
"milk": 4
]
print(prices.count) // 3
print(prices.isEmpty) // falseL'annotation de type [String: Int] se lit comme « les clés sont des String, les valeurs sont des Int ». Swift peut généralement l'inférer à partir du littéral, mais l'écrire explicitement rend les initialiseurs vides sans ambiguïté :
var counts: [String: Int] = [:]
// par rapport à un tableau vide, qui aurait également besoin d'un typeLire une clé qui existe retourne la valeur. Lire une clé qui n'existe pas retourne nil, la prochaine leçon traite de cette partie.
Défi
FacileLisez trois lignes d'entrée : un nom, un pays et un âge entier. Construisez un dictionnaire unique nommé person avec des clés de type String et les valeurs que vous avez lues (l'âge reste un Int, vous aurez besoin d'un type de valeur hétérogène, voir l'astuce).
Affichez trois lignes :
- Le nombre d'entrées dans le dictionnaire
name=<value>en utilisant l'accès par indice (subscript)country=<value>en utilisant l'accès par indice (subscript)
Utilisez la forme imprimable : lorsque vous lisez la valeur du dictionnaire en tant qu'Any, forcez le déballage (force-unwrap) avant l'affichage.
Pour l'entrée Alice / UK / 30, la sortie est :
3
name=Alice
country=UKAide-mémoire
Un dictionnaire stocke des paires clé/valeur avec des types de clé et de valeur fixes :
var prices: [String: Int] = [
"apple": 1,
"bread": 3,
"milk": 4
]
print(prices.count) // 3
print(prices.isEmpty) // falseCréez un dictionnaire vide avec une annotation de type explicite :
var counts: [String: Int] = [:]Utilisez [String: Any] pour des types de valeurs hétérogènes (types mixtes) :
var person: [String: Any] = [
"name": "Alice",
"age": 30
]Essayez vous-même
let name = readLine()!
let country = readLine()!
let age = Int(readLine()!)!
// TODO : construire un [String: Any] nommé person, afficher count, name, country
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et Flux
1Les chaînes de caractères en profondeur
Comptage et indicesCasse et nettoyageRecherche dans les chaînesDécoupage et jointureRemplacement de sous-chaînesRécapitulatif - Vérification du nom d'utilisateur4Ensembles
Création d'ensemblesUnion et intersectionSoustraction et différence symétriqueSous-ensemble et sur-ensembleRécapitulatif - Filtre de tags7Projet - Suivi d'habitudes
Aperçu du projetMarquer comme terminé10Projet - Moteur de quiz
Présentation du projetPoser des questions2Intervalles et Pas
Fermé vs Semi-ouvertLe PasMéthodes d'intervalleIntervalles dans un SwitchRécapitulatif - Grille de calendrier5Fonctions d'ordre supérieur, Partie 1
MapFilterReduceChaînage de map, filter, reduceRécapitulatif - Statistiques de mots3Dictionnaires
Déclarer des dictionnairesRecherche optionnelleMettre à jour des dictionnairesParcourir des dictionnairesGrouper des valeursRécapitulatif - Inventaire6Fonctions d'ordre supérieur, partie 2
compactMapflatMapsorted(by:)Construction de pipelinesRécapitulatif - Tableau de classement