Swift闭包
来源:互联网 发布:厦门众途软件 编辑:程序博客网 时间:2024/06/01 21:38
在Swift中,函数也可以作为一种类型:
比如如下test函数,它的入参opera的类型就是是一个入参是两个Double,出参是一个Double的函数
func test(opera: (Double,Double)->Double){ opera(1.0,1.0) }func paramFun(op1:Double,op2:Double) -> { return op1*op2}test(paramFun)
我们可以改进一下上面的写法:
不需要单独在外面写paramFun()的定义
直接用匿名函数的方式把函数作为参数传递给test函数
func test(opera: (Double,Double)->Double){ opera(1.0,1.0) }test( func paramFun(op1:Double,op2:Double) -> { return op1*op2 })
再改进一点,我们根本就不需要知道它的函数名paramFun
把函数名字去掉,并且把 ‘{‘括号提前 改写成如下:
func test(opera: (Double,Double)->Double){ opera(1.0,1.0) }test( { (op1:Double,op2:Double) -> Double in return op1*op2 })
这就是一种闭包方式的写法
再改进一点
因为test函数的定义是test(opera:(Double,Double)->Double)所以它知道它的参数 (op1:Double,op2:Double)->Double 其中op1 和 op2一定是Double类型的,并且返回类型也是Double的。
所以我们可以进一步简化为如下结果
test( { (op1,op2) in op1*op2 })
再进一步简化。swift不强制要求你写函数参数
所以可以更进一步简化为:
test( { $0*$1 })
我们可以看到最终的结果非常的简洁。
0 0
- 【Swift初见】Swift闭包
- Swift 闭包(六)
- Swift之闭包
- swift closure 闭包
- swift,闭包
- Swift闭包表达式
- [Swift]闭包
- Swift 闭包
- 7.Swift-闭包
- Swift-闭包
- Swift 闭包
- Swift-Closures 闭包
- swift 闭包(closure)
- 【swift-总结】闭包
- swift闭包总结
- swift中的闭包
- Swift:闭包(Closures)
- swift--闭包
- C# Redis Server分布式缓存编程(一)
- LeetCode *** 31. Next Permutation
- django的url 正则表达
- CGD全局并发队列和主队列的应用
- Android控件构架
- Swift闭包
- 适配
- C++第四次实验
- Android学习资料整理(三)
- Spring security 和 Spring session 一起使用
- 上传jar包到nexus私服
- Spinner下拉选项实现(配置文件方式和自定义adapter方式)
- UILabel文字过长时的文字省略位置
- 怎么反编译apk