Swift常见闭包表达式及其简写案例
闭包的概念(Closure)
- 闭包是可以在你的代码中被传递和引用的功能性独立代码块
- 闭包能够捕获和存储定义在其上下文中的任何常量和变量的引用,这也就是所谓的闭合并包裹那些常量和变量,因此被称为“闭包”,Swift能够为你处理所有关于捕获的内存管理操作
{ (parameters) -> (return type) in
statements
}
结合代码案例进行阐述:
let names = ["zhangsan","lisi","wangwu","zhaoliu"]
// 这里是定义一个函数,传递进去排序的
func backward(_ s1:String, _ s2:String) -> Bool{
return s1 > s2
}
var reversedNames = names.sorted(by: backward)
print(reversedNames)
// 日志打印输出结果
["zhaoliu", "zhangsan", "wangwu", "lisi"]
A.闭包表达式版本
let names = ["zhangsan","lisi","wangwu","zhaoliu"]
// 定义一个标准的闭包表达式
var reversedNames = names.sorted(by: {(s1: String, s2: String) -> Bool in
return s1 > s2
})
print(reversedNames)
B.语境推断类型
let names = ["zhangsan","lisi","wangwu","zhaoliu"]
// 语境推断类型
var reversedNames = names.sorted(by: {s1, s2 in return s1 > s2 })
print(reversedNames)
C.单表达式闭包隐式返回
let names = ["zhangsan","lisi","wangwu","zhaoliu"]
// 单表达式闭包隐式返回,省略return
var reversedNames = names.sorted(by: {s1, s2 in s1 > s2 })
print(reversedNames)
D.简写实际参数名
let names = ["zhangsan","lisi","wangwu","zhaoliu"]
// 在swift自动对行内闭包提供简写实际参数名
var reversedNames = names.sorted(by: {$0 > $1 })
print(reversedNames)
E.运算符函数
let names = ["zhangsan","lisi","wangwu","zhaoliu"]
// 在swift的String中定义了关于“>”的特定字符实现
var reversedNames = names.sorted(by: >)
print(reversedNames)
F.尾随闭包
let names = ["zhangsan","lisi","wangwu","zhaoliu"]
// 尾随闭包是一个被书写再函数形式参数的括号外面(后面)的闭包表达式
var reversedNames = names.sorted { $0 > $1 }
print(reversedNames)
文章目录
关闭
共有 0 条评论