码迷,mamicode.com
首页 > 其他好文 > 详细

使用闭包简化语法

时间:2016-01-31 13:27:19      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

//: 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(>)   // 因为">"本身就是一个函数..

  

使用闭包简化语法

标签:

原文地址:http://www.cnblogs.com/Rinpe/p/5173070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!