Swift之闭包
闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。
Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 匿名函数比较相似。
全局函数和嵌套函数其实就是特殊的闭包。
根据官方文档,闭包通常下三种形式之一:
全局函数 | 一个有名字但不会捕获任何值的闭包 |
---|---|
嵌套函数 | 一个有名字并可以捕获其封闭函数域内值的闭包 |
闭包表达式 | 一个利用轻量级语法所写的可以捕获其上下文中变量或常量值的匿名闭包 |
一、闭包引入
普通函数写法
func square(num:Int)->Int{
return num*num
}
print(square(num:123))
闭包写法
let f1 = {
(num:Int)->Int in
return num*num
}
print(type(of:f1))//fun1类型:(Int) -> Int
print(f1(456))
闭包表达式语法
1、由一对{}开始和结束;
2、in关键字把闭包分成两部分:参数与返回值、闭包体
思考1:demo是不是一个闭包
let demo = {
print("hello")}
print(type(of:demo))// () -> ()
思考2:写一个闭包表达式,实现两数相加
let sum = {
(num1:Int<