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