07-Swift 闭包

01-闭包表达式的基本操作

let 城市列表 = [
    "Beijing",
    "Shanghai",
    "Shenzhen",
    "New York"
]

func 排序(s1: String, s2: String) ->Bool {
    return (s1 < s2)
}

// sorted函数
var 城市列表2 = sorted(城市列表, 排序)

// 闭包表达式
var 城市列表3 = sorted(城市列表, {
    (s1: String, s2: String) ->Bool in
    return (s1 < s2)
})

// 闭包表达式参数的类型推断
var 城市列表4 = sorted(城市列表, {
    (s1, s2) ->Bool in
    return (s1 < s2)
})

// 闭包表达式的间接返回
var 城市列表5 = sorted(城市列表, {
    (s1, s2) ->Bool in (s1 < s2)
})

// 闭包表达式参数简写
var 城市列表6 = sorted(城市列表, {
    ($0 < $1)
})

// 操作符函数
var 城市列表7 = sorted(城市列表, <)

02-挂尾闭包

let 数字字典 = [
    0: "Zero",
    1: "One",
    2: "Two",
    3: "Three",
    4: "Four",
    5: "Five",
    6: "Six",
    7: "Seven",
    8: "Eight",
    9: "Nine"
]

let 数字数组 = [16, 587, 15764]

// 挂尾闭包
数字数组.map() {
    (var 数字) ->String in
    var 输出字符串 = ""
    
    while (数字 > 0) {
        输出字符串 = 数字字典[数字 % 10]! + 输出字符串
        数字 /= 10
    }
    return 输出字符串
}

03-闭包的值捕获

func 累加器(#增量: Int) -> () ->Int {
    var 总和 = 0
    
    func 累加() ->Int {
        // 闭包的值捕获是引用
        总和 += 增量
        return 总和
    }
    return 累加
}

let a = 累加器(增量: 5)
a()
a()
a()

let b = 累加器(增量: 3)
b()
b()
b()


转载于:https://my.oschina.net/u/2309294/blog/370703

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值