//: Playground - noun: a place where people can play import UIKit // 初始化一个整数数组 var arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9] // 排序, 默认是从小到大排序 arr.sort() // 通过闭包, 自定义排序方法 arr.sort({(a: Int, b: Int) -> Bool in return a > b }) arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9] arr.sort() // 使用闭包简化语法:由于swift能智能识别到闭包中参数类型和返回值类型 // 在定义闭包的时候, 可以简化成: arr = arr.sort({(a, b) in return a > b }) arr arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9] // 在闭包中, return是可以省略的(仅限在函数体只有一句话的时候) // 因此定义闭包的时候, 可以简化成: arr = arr.sort({(a, b) in a > b}) arr arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9] // 另外, 在闭包中如果有内部参数, 闭包默认也会给它们参数名 // 格式为: $1 $2 分别代表第一个参数和第二个参数, 以此类推 // 跟着, in也就跟着省略了... // 因此定义闭包的时候, 可以简化成: arr = arr.sort({return $0 > $1}) // 这里return一样可以省略 arr // 对上一节练习的简化: var arr2 = ["aa", "b", "bb", "abcd", "aabbcc", "cdefg", "a", "c"] arr2.sort({ let string1Length = $0.characters.count let string2Lenght = $1.characters.count if string1Length != string2Lenght { // 长度不相等 return string1Length < string2Lenght } else { // 长度相等 return $0 < $1 } }) // 接下来出大招了.. // 针对上面只是简单的比较两个整数的大小 // 可以简化成下面的样子: arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9] arr = arr.sort(>) // 因为">"本身就是一个函数..
时间: 2024-10-19 16:52:32