Standard Library Patterns
Sorted Values
sorted returns a new ordered array while leaving the input value available.
Sort without changing the original
sorted_values.swift
Replay: real traced execution (multi-file project)
let extra = 4
let values = [3, extra, 2, 8]
let sorted = values.sorted()
let message = "\(sorted[0]),\(sorted[1]),\(sorted[2]),\(sorted[3])"
print(message)
let extra = 1
let values = [3, extra, 2, 8]
let sorted = values.sorted()
let message = "\(sorted[0]),\(sorted[1]),\(sorted[2]),\(sorted[3])"
print(message)
let extra = 9
let values = [3, extra, 2, 8]
let sorted = values.sorted()
let message = "\(sorted[0]),\(sorted[1]),\(sorted[2]),\(sorted[3])"
print(message)
extra ← 4, values ← [3, 4, 2, 8], sorted ← [2, 3, 4, 8], message ← 2,3,4,8
1let extra→ 4 = 4 //@extra=1, 92let values→ [3, 4, 2, 8] = [3, extra4, 2, 8]3let sorted→ [2, 3, 4, 8] = values[3, 4, 2, 8].sorted()4let message→ 2,3,4,8 = "\(sorted[0]2),\(sorted[1]3),\(sorted[2]4),\(sorted[3]8)"56print(message2,3,4,8)output2,3,4,8
extra ← 1, values ← [3, 1, 2, 8], sorted ← [1, 2, 3, 8], message ← 1,2,3,8
1let extra→ 1 = 12let values→ [3, 1, 2, 8] = [3, extra1, 2, 8]3let sorted→ [1, 2, 3, 8] = values[3, 1, 2, 8].sorted()4let message→ 1,2,3,8 = "\(sorted[0]1),\(sorted[1]2),\(sorted[2]3),\(sorted[3]8)"56print(message1,2,3,8)output1,2,3,8
extra ← 9, values ← [3, 9, 2, 8], sorted ← [2, 3, 8, 9], message ← 2,3,8,9
1let extra→ 9 = 92let values→ [3, 9, 2, 8] = [3, extra9, 2, 8]3let sorted→ [2, 3, 8, 9] = values[3, 9, 2, 8].sorted()4let message→ 2,3,8,9 = "\(sorted[0]2),\(sorted[1]3),\(sorted[2]8),\(sorted[3]9)"56print(message2,3,8,9)output2,3,8,9
sorted
Sorting a value creates an ordered result that can be compared with the original array.