swift--闭包
Posted 浪味小仙女
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift--闭包相关的知识,希望对你有一定的参考价值。
1.sorted方法举例闭包的方法
不用闭包传入方法(String, String) -> Bool
.需要有这一样一个方法
let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]
func backward(_ s1: String, _ s2: String) -> Bool {
return s1 > s2
}
var reversedNames = names.sorted(by: backward)
利用闭包
reversedNames = names.sorted(by: { (s1: String, s2: String) -> Bool in
return s1 > s2
})
根据上下文自动判断类型
reversedNames = names.sorted(by: { s1, s2 in return s1 > s2 } )
隐藏return隐藏返回的类型
reversedNames = names.sorted(by: { s1, s2 in s1 > s2 } )
参数也可以省略
reversedNames = names.sorted(by: { $0 > $1 } )
只留符号作为表达式
reversedNames = names.sorted(by: >)
改成尾随包
reversedNames = names.sorted() { $0 > $1 }
如果闭包表达式是函数或方法的唯一参数,使用尾随闭包时,可以把 ()
省略掉
reversedNames = names.sorted{ $0 > $1 }
2.值捕获栗子
func makeIncrementer(forIncrement amount: Int) -> () -> Int {
var runningTotal = 0
func incrementer() -> Int {
runningTotal += amount
return runningTotal
}
return incrementer
}
let incrementByTen = makeIncrementer(forIncrement: 10)
incrementByTen()//10
incrementByTen()//20
let incrementBySeven = makeIncrementer(forIncrement: 7)
incrementBySeven()//7
incrementBySeven()//14
incrementByTen()//30
3.逃逸闭包
4.自动闭包
以上是关于swift--闭包的主要内容,如果未能解决你的问题,请参考以下文章