Menu
Coddy logo textTech

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)          // false

L'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 type

Lire une clé qui existe retourne la valeur. Lire une clé qui n'existe pas retourne nil, la prochaine leçon traite de cette partie.

challenge icon

Défi

Facile

Lisez 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 :

  1. Le nombre d'entrées dans le dictionnaire
  2. name=<value> en utilisant l'accès par indice (subscript)
  3. 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=UK

Aide-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) // false

Cré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
quiz iconTestez-vous

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