Swift version: 5.10
Trailing closure syntax is a little piece of syntactic sugar that makes particularly common code more pleasant to read and write. Many functions in iOS accept multiple parameters where the final parameter is a closure. For example, if you've done animation in iOS you'll be familiar with this method:
public class func animate(withDuration: TimeInterval, animations: () -> Void)
That accepts an animation duration as its first parameter, and a closure containing animation instructions as its second.
One way of calling this method is like this:
UIView.animate(withDuration: 1, animations: { [unowned self] in
self.view.backgroundColor = UIColor.red
})
While that is perfectly valid Swift code, it's harder to read than it ought to be. If a closure is the last parameter to a method, as seen here, Swift allows you write your code like this instead:
UIView.animate(withDuration: 1) { [unowned self] in
self.view.backgroundColor = UIColor.red
}
That's shorter, and avoids the double closing })
code.
This functionality is available wherever a closure is the final parameter to a function. For testing purposes, we could write a simple one like this:
func greetThenRunClosure(name: String, closure: () -> ()) {
print("Hello, \(name)!")
closure()
}
That prints a message, then runs a closure. Because the closure is the final parameter to the function, we can call it using trailing closure syntax like this:
greetThenRunClosure(name: "Paul") {
print("The closure was run")
}
SPONSORED Get accurate app localizations in minutes using AI. Choose your languages & receive translations for 40+ markets!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 7.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.