Menu
Coddy logo textTech

Recherche optionnelle

Fait partie de la section Logique et Flux du Journey Swift de Coddy. Leçon 13 sur 56.

Les indices de dictionnaire retournent toujours un Optional : la valeur lorsque la clé existe, nil lorsqu'elle n'existe pas. Swift vous oblige à gérer les deux cas.

let prices: [String: Int] = ["apple": 1, "bread": 3]
let p = prices["apple"]
print(p)                          // Optional(1)

Trois manières idiomatiques de gérer l'optionnel. Choisissez celle qui convient à la situation.

1. if let : gérez les deux branches explicitement :

if let p = prices["apple"] {
    print("apple costs \(p)")
} else {
    print("unknown")
}

2. coalescence nil ?? : fournit une valeur de repli en ligne :

let p = prices["olive"] ?? 0    // 0

3. subscript avec valeur par défaut : résultat identique, mais la valeur par défaut reste également en place si vous écrivez à nouveau dans cette clé :

var counts = ["a": 2]
counts["b", default: 0] += 1   // counts == ["a": 2, "b": 1]
challenge icon

Défi

Facile

Le dictionnaire prices est fourni. Lisez une seule ligne d'entrée : une liste d'articles séparés par des virgules que l'utilisateur souhaite acheter.

Pour chaque article, dans l'ordre de saisie, recherchez-le dans prices. Affichez une ligne par article :

  • <item> @ <price> lorsque l'article est présent dans le dictionnaire
  • <item> not sold sinon

Après avoir listé chaque article, affichez une dernière ligne : Total: <sum>. Traitez les articles manquants comme coûtant 0 en utilisant l'opérateur de fusion nil (nil-coalescing operator).

Pour l'entrée apple,bread,olive,milk, la sortie est :

apple @ 1
bread @ 3
olive not sold
milk @ 4
Total: 8

Essayez vous-même

let prices: [String: Int] = ["apple": 1, "bread": 3, "milk": 4]
let items = readLine()!.components(separatedBy: ",")

// À FAIRE : recherche par article ; afficher '@ prix' ou 'non vendu' ; sommer avec ?? 0
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

Entraînez-vous par vous-même : Playground Swift