记录学习到,关于闭包的点滴。
1:如果闭包是函数的最后一个参数,则可以将闭包写在()后面,也可以写在()里面
2:如果函数只有一个参数,并且该参数是闭包,那么()可以不写
闭包的用法:
1:可以为Int类型做一个拓展例如:
extension Int {
func times(f: (Int) -> (Void)){
print("Void")
for i in 1...self{
f(i)
}
}
}
// let t = 10
// t.times { (i:Int) in
// print(i)
// }
可以循环得到1至10的值。
2:可以封装一个闭包作为参数的函数,进行回调。
封装网络请求
class Client {
static let shareInstance = HYClient()
private init() {}
func appPostRequest(_ path: String, parameters: Any?,done:(([String:AnyObject]?) -> Void)? = nil){
let out = "你好"
if let goods = done{
goods(["out":out as AnyObject])
}
}
func show(_ content:String,done:(_ cont:String) ->()){
done("闭包参数")
}
}
//
Client.shareInstance.appPostRequest("", parameters: nil, done:
{obj in
if let out = obj?["out"]{
//这样就把值“你好”拿到了
}
})
Client.shareInstance.show("参数", done:{(cont) ->() in
//cont 值为“闭包参数”
}
)
关于闭包还有需要学习的地方
待续。。。。