TheDocumentation Index
Fetch the complete documentation index at: https://docs.syntblaze.com/llms.txt
Use this file to discover all available pages before exploring further.
@autoclosure attribute is a parameter declaration modifier in Swift that automatically wraps an expression passed as an argument into a parameterless closure. It provides syntactic sugar by allowing the caller to omit the explicit closure braces {} at the call site, while preserving the deferred execution semantics inherent to closures.
Syntax and Mechanics
When a function parameter is annotated with@autoclosure, the Swift compiler intercepts the passed expression and encapsulates it within a closure of type () -> T, where T is the return type of the expression.
Technical Constraints and Behavior
- Signature Requirement: The attribute can only be applied to closures that take no arguments. Applying
@autoclosureto a closure type that requires parameters (e.g.,(Int) -> Bool) will result in a compiler error. - Deferred Evaluation: The expression passed as the argument is not evaluated at the time of the function call. Evaluation is strictly deferred until the closure is explicitly invoked within the function body. If the closure is never called, the expression is never evaluated.
- Escaping Contexts: By default, closures created by
@autoclosureare non-escaping. If the wrapped expression needs to outlive the scope of the function (e.g., stored in a property or executed asynchronously), the parameter must be annotated with both@autoclosureand@escaping.
- Error Handling: If the expression being wrapped can throw an error, the autoclosure must be marked with
throws. Thetrykeyword is placed at the call site of the function, not inside the omitted closure braces.
Master Swift with Deep Grasping Methodology!Learn More





