Swift - 36 - 结尾闭包(Trailing closure)和捕获数值(Capturing Values)的简单介绍

//: 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(){(a: Int, b: Int) -> Bool in
    return a > b
}

// Trailing closure
// 结尾闭包:就是将闭包这个参数写在函数括号的外面, 阅读起来感觉好一些..
// 不过有一个前提, 就是闭包必须是最后一个参数
// 感觉更像是在写一个函数
arr.sort() {(a: Int, b: Int) -> Bool in
    return a > b
}

// Capturing Values
// 闭包内如果用到的变量不是在闭包中所定义的, 闭包会自动向外面一层寻找
// 在swift中使用这个特性不会引发内存相关的问题
var number = 5
arr.sort() {
    return fabs(Float($0 - number)) < fabs(Float($1 - number))
}

  

posted @ 2016-01-31 14:06  Rinpe  阅读(403)  评论(0编辑  收藏  举报