map builds a new array by transforming each element.

Transform every element

scale
mapped_values.swift
Replay: real traced execution (multi-file project)
let scale = 3
let scores = [2, 4, 6]
let adjusted = scores.map { value in
    return value * scale
}
let message = "\(adjusted[0]),\(adjusted[1]),\(adjusted[2])"

print(message)
let scale = 2
let scores = [2, 4, 6]
let adjusted = scores.map { value in
    return value * scale
}
let message = "\(adjusted[0]),\(adjusted[1]),\(adjusted[2])"

print(message)
let scale = 5
let scores = [2, 4, 6]
let adjusted = scores.map { value in
    return value * scale
}
let message = "\(adjusted[0]),\(adjusted[1]),\(adjusted[2])"

print(message)
  1. scale ← 3, scores ← [2, 4, 6], adjusted ← [6, 12, 18], message ← 6,12,18

    1let scale→ 3 = 3  //@scale=2, 52let scores→ [2, 4, 6] = [2, 4, 6]3let adjusted→ [6, 12, 18] = scores[2, 4, 6].map { value in4    return value * scale5}6let message→ 6,12,18 = "\(adjusted[0]6),\(adjusted[1]12),\(adjusted[2]18)"78print(message6,12,18)
    output6,12,18
  1. scale ← 2, scores ← [2, 4, 6], adjusted ← [4, 8, 12], message ← 4,8,12

    1let scale→ 2 = 22let scores→ [2, 4, 6] = [2, 4, 6]3let adjusted→ [4, 8, 12] = scores[2, 4, 6].map { value in4    return value * scale5}6let message→ 4,8,12 = "\(adjusted[0]4),\(adjusted[1]8),\(adjusted[2]12)"78print(message4,8,12)
    output4,8,12
  1. scale ← 5, scores ← [2, 4, 6], adjusted ← [10, 20, 30], message ← 10,20,30

    1let scale→ 5 = 52let scores→ [2, 4, 6] = [2, 4, 6]3let adjusted→ [10, 20, 30] = scores[2, 4, 6].map { value in4    return value * scale5}6let message→ 10,20,30 = "\(adjusted[0]10),\(adjusted[1]20),\(adjusted[2]30)"78print(message10,20,30)
    output10,20,30
map The `map` method keeps the number of elements the same while changing each value.