Standard Library Patterns
Dictionary Default
A dictionary subscript can provide a default when a key is missing.
Read with a fallback
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)
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
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
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.