Welcome to Lesson 5 of Intro to Functional Swift. You will learn how to beautify a closure block.
A closure is too long to pass through a function
Create a function which takes two parameters: Int
and () -> Void
func trailingClosure(number: Int, closure: () -> Void) {
print("You've entered \(number)")
closure()
}
Create a closure block which will be passed to trailingClosure
func helloFunc() -> Void {
print("Hello, Function!")
}
helloFunc // () -> Void
let helloClosure = {
print("Hello, Closure!")
}
Pass helloFunc
and helloClosure
to the function.
trailingClosure(number: 100, closure: helloFunc)
trailingClosure(number: 100, closure: helloClosure)
If a function's last parameter requires a closure block, you may beautify.
// Trailing Closure #1
trailingClosure(number: 100, closure: { print("Hello!!!") })
// Trailing Closure #2
trailingClosure(number: 100) { print("Hello!!!!!") }
func trailingClosures(number: Int, closure: (Int) -> Int) {
let newNumber = closure(number)
print(newNumber)
}
The last parameter of the function above requires (Int) -> Int
. You may use a trailing closure block instead.
// Without trailing closure
trailingClosures(number: 1000, closure: { number in number * number })
// With trailing clousre
trailingClosures(number: 500) { number in number * number }
trailingClosures(number: 400) { $0 * $0 }
3005_trailing_closures.playground
You've learned how to beautify a function whose last parameter contains a closure block. Trailing closures improve readability and zenness. You will see its beauty throughout the course.
In the following lesson, you will learn one of the most dreaded topics of all time: Completion handlers. You will learn how to design on your own. It's time to level up.
Note: Learn Swift with Bob is available on Udemy. If you wish to receive a discount link, you may sign up here.