Arrays keep ordered values and can be appended to or updated by index.

Change an ordered list

firstScore
array_updates.swift
Replay: real traced execution (multi-file project)
let firstScore = 8
var scores = [firstScore, 10, 14]
scores.append(16)
scores[1] = scores[1] + 2

let total = scores[0] + scores[1] + scores[2] + scores[3]
print("scores=\(scores)")
print("total=\(total)")
let firstScore = 5
var scores = [firstScore, 10, 14]
scores.append(16)
scores[1] = scores[1] + 2

let total = scores[0] + scores[1] + scores[2] + scores[3]
print("scores=\(scores)")
print("total=\(total)")
let firstScore = 12
var scores = [firstScore, 10, 14]
scores.append(16)
scores[1] = scores[1] + 2

let total = scores[0] + scores[1] + scores[2] + scores[3]
print("scores=\(scores)")
print("total=\(total)")
  1. firstScore ← 8, scores ← [8, 10, 14], scores[1] ← 12, total ← 50

    1let firstScore→ 8 = 8  //@firstScore=5, 122var scores→ [8, 10, 14] = [firstScore8, 10, 14]3scores→ [8, 10, 14, 16].append(16)4scores[1]→ 12 = scores[1] + 256let total→ 50 = scores[0]8 + scores[1]12 + scores[2]14 + scores[3]167print("scores=\(scores[8, 12, 14, 16])")8print("total=\(total50)")
    outputscores=[8, 12, 14, 16]
    total=50
  1. firstScore ← 5, scores ← [5, 10, 14], scores[1] ← 12, total ← 47

    1let firstScore→ 5 = 52var scores→ [5, 10, 14] = [firstScore5, 10, 14]3scores→ [5, 10, 14, 16].append(16)4scores[1]→ 12 = scores[1] + 256let total→ 47 = scores[0]5 + scores[1]12 + scores[2]14 + scores[3]167print("scores=\(scores[5, 12, 14, 16])")8print("total=\(total47)")
    outputscores=[5, 12, 14, 16]
    total=47
  1. firstScore ← 12, scores ← [12, 10, 14], scores[1] ← 12, total ← 54

    1let firstScore→ 12 = 122var scores→ [12, 10, 14] = [firstScore12, 10, 14]3scores→ [12, 10, 14, 16].append(16)4scores[1]→ 12 = scores[1] + 256let total→ 54 = scores[0]12 + scores[1]12 + scores[2]14 + scores[3]167print("scores=\(scores[12, 12, 14, 16])")8print("total=\(total54)")
    outputscores=[12, 12, 14, 16]
    total=54

Append and Update

  1. scores starts as [8, 10, 14].
  2. append(16) adds a fourth score.
  3. scores[1] = scores[1] + 2 changes 10 to 12.
  4. The total adds all four final scores. | Index | Final score | | --- | --- | | 0 | 8 | | 1 | 12 | | 2 | 14 | | 3 | 16 |
arrays Use an array when order matters. `append` adds a new element, and subscript assignment changes an element at a known index.

Exercise: array_updates.swift

Append one score, update one indexed score, and print the final scores and total