【swift-总结】闭包
2015-07-02 18:35
519 查看
其实闭包就是函数
作为条件的函数
将这个数组按照字母排序
声明一个闭包函数
sorted()函数返回一个数组,sort()函数返回空,排序自身
官方例子
官方例子
作为条件的函数
闭包表达式
首先声明一个数组var names = ["Charis", "Alex", "Ewa", "Barry", "Daniella"]
将这个数组按照字母排序
声明一个闭包函数
func backwards(s1: String, s2:String) -> Bool { return s1 > s2 }
sorted()函数返回一个数组,sort()函数返回空,排序自身
///传入闭包函数 names.sort(backwards)
使用闭包表达式
//闭包表达式就是一个函数在花括号里面 names.sort({(s1: String, s2: String) -> Bool in return s1 > s2})
又因为swift的值是可推断类型
上面的又可以简化var reversed = names.sorted({s1, s2 in return s1 > s2})
单闭包隐式返回
//会隐式return names.sorted({s1, s2 in s1 > s2})
名称缩写
names.sort({$0 > $1})
运算符函数
names.sort(>)
尾随闭包
有时候闭包表达式太麻烦,可以把闭包写在调用函数后面的花括号中//调用sort函数,后面添加花括号,然后闭包表达式就写在这里 names.sort() {$0 > $1}
官方例子
//声明一个字典 let digitNames = [0:"zero", 1:"one", 2:"two", 3:"three", 4:"four", 5:"five", 6:"six", 7:"seven", 8:"eight", 9:"nine"] //一个数组 let numbers = [16, 58, 510] //调用map函数,里面传入闭包 let strings = numbers.map{ //传入一个number返回一个String (var number) -> String in var output = "" while number > 0 { output = digitNames[number % 10]! + output//找到每一个数字,转为字符串 number /= 10 } return output }
值捕获
首先闭包是引用类型官方例子
///定义一个返回() -> Int 类型的函数 func makeIncrementor(forIncrement amount:Int) -> () -> Int { var runningTotal = 0 //一个闭包函数 func incrementor() -> Int { runningTotal += amount; return runningTotal } //返回这个闭包,此时这个闭包已经包含runningTotal和amount的值 return incrementor }
let incrementByTen1 = makeIncrementor(forIncrement: 10) let incrementByTen2 = makeIncrementor(forIncrement: 1) incrementByTen1() //10 所以值会被闭包一直保留 incrementByTen1() //20 incrementByTen2() //1
相关文章推荐
- OC移植 swfit——Unknown type name 'NSData'
- swift 创建cocoapod
- Swift, Playgrounds, and XCPlayground
- Swift开发学习(二):Playground
- Swift 2.0初探
- 进军swift
- Swift 学习笔记,UILabel自适应高度宽度
- swift学习笔记1
- Swift xcode 快捷键
- Swift 避免hardcode
- swift添加pod
- Swift 实现单例模式Singleton pattern的三种方法
- Ios Swift学习之一基础知识
- swift 可变参数
- Swift开发iOS app初学一周体会
- Swift computed property可计算属性详解
- Swift 另类判断语句用法 button.selected = index < rating
- Swift数据类型--布尔和字符串
- Swift 字符串
- swift复合类型