swift 闭包 由浅入深 优化
来源:互联网 发布:ac1200双频路由器端口 编辑:程序博客网 时间:2024/06/07 16:05
//: Playground - noun: a place where people can playimport UIKit///////////////////////////////////////////////func sorted(isOrderedBefore:(T, T)->Bool) -> [T]{// //}let animals = ["fish", "cat", "chicken", "dog"]//func isOrderedBefore(one : String, two: String) -> Bool//{// return one < two//}////let sortedString = animals.sort(isOrderedBefore)// 与排序 小于号 ,传递核心代码let sortedString = animals.sort({(one: String, two: String) -> Bool in return one < two})// 在sort 函数里面传递了参数 而参数又是一个函数 ,这个函数就叫做闭包// 闭包 没有完整的函数声明 有参数列表 one: String, two: String// in关键字后面是闭包的实现代码 // 编译器可以断言出参数的类型let sortedString2 = animals.sort({(one, two) -> Bool in return one < two})// -> Bool 返回值信息也可以 删除掉 这个信息可以再sort的声明中得到< sort 声明>let sortedString3 = animals.sort({(one, two) in return one < two})// 没有返回值类型->bool声明以后 ()也可以去除掉let sortedString4 = animals.sort({one, two in return one < two})// 可以省略执行代码的return语句 编译器已经断言出来返回值是bool 类型 //所执行代码一行,删除return 语句let sortedString5 = animals.sort({one, two in one < two})//接下来我们还可以省略参数// one two 没有意义 用参数本地常量进行代替let sortedString6 = animals.sort({$0 < $1})//如果传递的闭包是方法或者函数的最后一个参数, 可以将闭包放到闭包的外面//称为结尾闭包let sortedString7 = animals.sort(){$0 < $1}print(sortedString7)// 还可以移除没有参数的括号let sortedString8 = animals.sort{$0 < $1}print(sortedString8)//把花括号替换为小括号 只写一个 < 闭包神奇之处let sortedString9 = animals.sort(>)print(sortedString9)//----------------------------------------------//闭包还可以捕获 上下文中常量或者变量的数值//甚至原始环境销毁也可以使用typealias stateMachineType = () ->Intfunc makeStateMachine(maxState: Int) -> stateMachineType{ var currentState: Int = 0 return{ currentState++ if currentState > maxState{ currentState = 0 } return currentState }}let tt = makeStateMachine(2)print(tt())print(tt())print(tt())print(tt())print(tt())// 不管makeStateMachine 是否在生存期内 都可以捕获makeStateMachine里面的 currentState 变量值 一直存在//闭包可以超越自身的生命周期捕获外面的变量值
0 0
- swift 闭包 由浅入深 优化
- javascript 闭包 原型 由浅入深
- 6.4 Swift闭包表达式语法优化
- 由浅入深理解闭包的运行机制
- 【Swift初见】Swift闭包
- Swift 闭包(六)
- Swift之闭包
- swift closure 闭包
- swift,闭包
- Swift闭包表达式
- [Swift]闭包
- Swift 闭包
- 7.Swift-闭包
- Swift-闭包
- Swift 闭包
- Swift-Closures 闭包
- swift 闭包(closure)
- 【swift-总结】闭包
- Android开发使用的常见第三方框架汇总
- JS match() 方法注意点 (一)
- 开始Blog
- [转]网游同步算法之导航推测(Dead Reckoning)算法
- 让浏览器不再显示 https 页面中的 http 请求警报
- swift 闭包 由浅入深 优化
- axis2创建webservice流程
- Android开发中用到的缓存处理
- 单链表-java
- 大数据笔记
- Hadoop2.5.2完全分布式 运行wordcount
- 深度分析Unity的Coroutine
- $.ajax()方法详解
- Qt中利用定时器QTimer准实时显示当前日期和时间