返回
Swift- Closures 闭包(2)进阶篇
IOS
2023-09-25 07:37:03
尾随闭包调用逻辑
常规情况下,尾随闭包会紧跟在闭包参数后面,组成以下形式:
func someFunction(closure: (Int, Int) -> Int) {
// 函数体
}
someFunction(closure: { (a: Int, b: Int) -> Int in
return a + b
})
这里 { (a: Int, b: Int) -> Int in ... }
是一个尾随闭包,它接收两个 Int 类型的参数并返回一个 Int 类型的结果。
但是,在 Swift 中,我们可以通过省略闭包参数类型和 return 来简化尾随闭包的写法:
func someFunction(closure: (Int, Int) -> Int) {
// 函数体
}
someFunction(closure: { (a, b) in a + b })
简写形式
在 Swift 中,我们可以进一步简化尾随闭包的写法,省略闭包参数名称和 in
func someFunction(closure: (Int, Int) -> Int) {
// 函数体
}
someFunction(closure: { $0 + $1 })
这种写法将闭包参数直接作为表达式使用,更加简洁明了。
测试题
- 以下代码输出什么?
func addTwoNumbers(a: Int, b: Int) -> Int {
return a + b
}
func printResult(result: Int) {
print("The result is \(result)")
}
printResult(result: addTwoNumbers(a: 1, b: 2))
- 以下代码输出什么?
func addTwoNumbers(a: Int, b: Int) -> Int {
{ (a: Int, b: Int) -> Int in
return a + b
}(a, b)
}
print(addTwoNumbers(a: 1, b: 2))
- 以下代码输出什么?
func addTwoNumbers(a: Int, b: Int) -> Int {
{ $0 + $1 }(a, b)
}
print(addTwoNumbers(a: 1, b: 2))
答案
- 3
- 3
- 3
总结
本篇文章深入剖析了 Swift 中闭包的进阶知识,包括正常的尾随闭包调用逻辑、闭包简写形式以及相关测试题。涵盖了闭包的基础语法和使用场景,文章有助于读者全面掌握 Swift 闭包的使用技巧,为后续的代码块、委托、高阶函数等主题学习打下坚实的基础。