A dictionary subscript can provide a default when a key is missing.

Read with a fallback

name
dictionary_default.swift
Replay: real traced execution (multi-file project)
let name = "Kai"
let scores = ["Kai": 12, "Mina": 18]
let score = scores[name, default: 0]
let message = "\(name)=\(score)"

print(message)
let name = "Mina"
let scores = ["Kai": 12, "Mina": 18]
let score = scores[name, default: 0]
let message = "\(name)=\(score)"

print(message)
let name = "Zoe"
let scores = ["Kai": 12, "Mina": 18]
let score = scores[name, default: 0]
let message = "\(name)=\(score)"

print(message)
  1. name ← Kai, scores ← ["Mina": 18, "Kai": 12], score ← 12, message ← Kai=12

    1let name→ Kai = "Kai"  //@name="Mina", "Zoe"2let scores→ ["Mina": 18, "Kai": 12] = ["Kai": 12, "Mina": 18]3let score→ 12 = scores[name, default: 0]124let message→ Kai=12 = "\(nameKai)=\(score12)"56print(messageKai=12)
    outputKai=12
  1. name ← Mina, scores ← ["Kai": 12, "Mina": 18], score ← 18, message ← Mina=18

    1let name→ Mina = "Mina"2let scores→ ["Kai": 12, "Mina": 18] = ["Kai": 12, "Mina": 18]3let score→ 18 = scores[name, default: 0]184let message→ Mina=18 = "\(nameMina)=\(score18)"56print(messageMina=18)
    outputMina=18
  1. name ← Zoe, scores ← ["Kai": 12, "Mina": 18], score ← 0, message ← Zoe=0

    1let name→ Zoe = "Zoe"2let scores→ ["Kai": 12, "Mina": 18] = ["Kai": 12, "Mina": 18]3let score→ 0 = scores[name, default: 0]04let message→ Zoe=0 = "\(nameZoe)=\(score0)"56print(messageZoe=0)
    outputZoe=0
dictionary default The `default:` argument supplies a value for missing keys without changing the dictionary.