[Swift]Closures概念与使用

闭包在开发中那是相当常见,但其奇特的长相对初学者并不十分友好,现在我们就来看看闭包到底是个什么东西,可以怎么用?

let a:Int -> Int
let b:Int -> Int
func squareFun(x: Int) -> Int {
    return x*x
}
a = squareFun
b = {(x: Int) -> Int in return x*x}

 就像上面的实例代码,我们先定义了变量a,b是一个通过一个Int型值返回另一个Int型值的函数,然后把函数squareFun赋给a,而b则是以闭包的写法赋值,其效果是一样的。

当我们使用闭包语法的时候,不需要指定参数类型和返回值类型,因为闭包语法会自动判断。

b = {x in return x*x}

 甚至,我们可以省略关键字return:

b = {x in x*x}

 还能再简单吗?当然可以!就是这么逆天!

b = {$0 * $0}

 $0表示第一个传过来的参数,$1表示第二个。。。以此类推,就像这样:

let a:(Int,Int) -> Int
a = {$0 + $1}
print(a(3,2))

真是太简单了!

数组有一个方法是以函数为参数的:map

let array = [1,2,3]
let a:Int -> Int
a = {$0 + 2}
let result = array.map(a)
print(result)

 map返回一个包含自身映射变换后的数组。注意到没有?每次我们都要先定义一个变量表示函数,再定义闭包,其实,立即!马上!立刻!使用闭包的情况,我们是不需要定义这个变量的:

let array = [1,2,3]
let result = array.map({$0 + 2})
print(result)

 

转载于:https://www.cnblogs.com/ybw123321/p/5433810.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值