swiftiOS-swift

Swift闭包(一):基础篇

2017-02-09  本文已影响186人  长不大的帅小伙

Swift闭包和OC中block很类似,是一段自包含的函数代码块,可以在代码中使用和传递。相当于一个匿名函数

闭包写法和演变过程

通过一个例子来说明这个问题:

func testClosure(value: Int, paramFunc: (Int) -> Int) -> String {
    return String(paramFunc(value))
}

这段事例代码再简单不过了,不过我这里还是要说明下testClosure这个函数下的paramFunc参数,这个参数的类型是(Int) -> Int(是一个返回Int,参数是Int的函数)。

最原始写法

既然paramFunc参数需要传一个(Int) -> Int类型函数,那么就写一个函数作为参数传递,这种写法的好处就是,这个函数不仅可以在这里当参数传递,还可以在其它地方使用。

func aa(v: Int) -> Int {
    return v
}
testClosure(value: 10, paramFunc: aa)

闭包写法

testClosure(value: 10, paramFunc: { (v: Int) -> Int in
    return v * 10
})
testClosure(value: 10) { (v: Int) -> Int in
    return v * 10
}
// 自动推导返回值类型,参数类型
testClosure(value: 10) { v in
    return v * 10
}

// return 省略了
testClosure(value: 10) { v in
    v * 10
}

// 注意与函数的区别,函数是有func修饰的,而这里长的很想函数,其实不是函数,而是在调用函数
testClosure(value: 10) {
    $0 * 10
}
上一篇下一篇

猜你喜欢

热点阅读