Quick Answer

Anonymous functions that capture their environment

Understanding the Issue

Swift closures capture references to variables from their surrounding context. They support trailing closure syntax and shorthand argument names for concise code.

The Problem

This code demonstrates the issue:

Swift Error
// Problem: Verbose closure syntax
let numbers = [1, 2, 3]
let doubled = numbers.map({ (number: Int) -> Int in
    return number * 2
})

The Solution

Here's the corrected code:

Swift Fixed
// Solution: Concise closure syntax
let doubled = numbers.map { $0 * 2 }

// Capturing values
var counter = 0
let incrementer = { counter += 1 }

Key Takeaways

Use Swift's closure syntax to write concise callback and transformation code.