Swift中对闭包的理解

这篇博客主要介绍了Swift 2.0中的闭包,包括全局变量、嵌套函数和闭包表达式三种类型,并通过代码示例展示了闭包的使用,如在函数中作为参数以及嵌套函数的应用。作者分享了闭包表达式的简洁风格,如上下文类型推断、省略return关键字等特性,并提供了相关的代码片段。
摘要由CSDN通过智能技术生成

现在网上好多的都是针对Swift1.0的闭包, 以下我我自己写得Swift2.0的闭包, 有问题欢迎大家指出, 从”第三点”开始

一.知识点
Swift中的闭包有三个种类
全局变量是一个有名字但不会获取任何值的闭包
嵌套函数是一个有名字并且可以捕获其等比函数域内值的闭包
闭包表达式是一个利用轻量级语法所写的可以捕获其上下文中变量或常量值的没有名字的闭包
Swift的闭包表达式拥有比较简洁的风格, 实现场景的优化
利用上下文推断参数和返回值类型
单表达式闭包可以省略return等关键字
参数名称可以简写
Trailing闭包语法(例子:三.代码)
二.代码片段
视频连接
1. 创建一个函数, 一个数组型参数 一个整型参数 一个闭包参数类型(在闭包中传了两个参数) 返回Bool类型
2. 遍历了一下数组, 看是否满足函数的要求, 如果满足则返回真, 不满足返回假

func hasClosureMatch(arr : [Int], value:Int, cb:(num : Int, value:Int) -> Bool) ->Bool {
    for item in arr {
        // 只是调用cb 闭包closure里面的函数, 但是不管如何实现
        if (cb(num:item, value: value)) {
            return true;
        }
    }
    return false;
}

创建一个arr的数组

var arr = [20, 9, 100, 34, 89, 39];

执行方法: 用arr中的数值与value中的数值进行比较, 看arr中的数字是否有比value大的

var v1 = hasClosureMatch(arr, value: 40, cb: {
    (num:Int, value:Int) -> Bool in
    return num >= value
    });
print("v1 is \(v1)");

或者使用:
直接使用了 0 1进行了比较

var v3 = hasClosureMatch(arr, value: 10, cb: {
    // 没有写类型(num: Int, value:Int) -> Bool in
    // 这里$0是num $1是value
    return $0 < $1;
});
print("v3 is \(v3)");

三.嵌套函数
本来是想多写点得, 可是突然不知道如何才可以使得代码变得更简单了….哎

// 直接使用sortInPlace()进行排序
var nums = [1, 9, 2, 8]
func testF(num1:Int, num2:Int) -> Bool {
    return num1 > num2
}
nums.sortInPlace()
print("排序后:nums = \(nums)");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值