Menu
CoddyTech

Recherche optionnelle

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

Les indices de dictionnaire renvoient toujours une valeur Optional : la valeur lorsque la clé existe, nil lorsqu’elle n’existe pas. Swift vous force à gérer les deux cas.

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

Trois façons idiomatiques de gérer l’optionnel. Choisissez celle qui convient à la situation.

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

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

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

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

3. indice avec valeur par défaut : résultat identique, mais la valeur par défaut reste également en place si vous réécrivez 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’éléments séparés par des virgules que l’utilisateur souhaite acheter.

Pour chaque élément, dans l’ordre de saisie, recherchez-le dans prices. Affichez une ligne par élément :

  • <item> @ <price> lorsque l’élément se trouve dans le dictionnaire
  • <item> not sold sinon

Après avoir listé chaque élément, affichez une dernière ligne : Total: <sum>. Considérez les éléments absents comme ayant un coût de 0 en utilisant l’opérateur de coalescence des valeurs nil.

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: ",")

// TODO: recherche par article ; afficher '@ price' ou 'not sold' ; 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