Swift 闭包

// 函数作为参数的情况

// 第一层函数,参数为一个数组,和一个比较的函数,返回值是一个bool类型

// 比较函数,判断第一层函数传入的数组中是否有大于10的数,如果大于10返回true,如果小于10返回false                     cb:(num:Int, value:Int) -> Bool

func hasAnyMatches(numbers:[Int], condition:(Int)->Bool) -> Bool{

    for num in numbers {

        if condition(num){

            return true

        }

    }

    return false

}


func moreThanTen (num:Int) -> Bool {

    if num > 10 {

        return true

    }else{

        return false

    }

}

print(hasAnyMatches([5,3,15,6,5,4], moreThanTen))

// print(hasAnyMatches([5,3,15,6,5,4], condition: moreThanTen)) // xcode7 以后的方法



// 以下是用闭包实现上面的方法

// 闭包 , 类似于OC中的block,引起代码的回调

// 闭包作为函数参数,cb就是一个闭包

func hasClosureMathes (arr:[Int], value:Int, cb:(num:Int, value:Int) -> Bool) -> Bool{

    for item1 in arr {

        if cb(num: item1, value: value){

            return true

        }

    }

    return false

}

// in 是闭包的一个标志,它的前面是参数列表和返回值类型,后面是实现的代码

// 函数与闭包的区别对比 就是一个有一个func 另一个有 in

var v1 = hasClosureMathes([46,65,49,15,36,26], 32) { (num, value) -> Bool in

    if num < value {

       return true

    }else{

       return false

    }

}

print(v1)

print("\n")


var v2 = hasClosureMathes([22,986,695,621,61,4,631], 300) { (num, value) -> Bool in

    if num < value {

        return true

    }else{

        return false

    }

}

print(v2)


// 定义一个数组,里面String类型的人名,判断数组里面是否有一个叫小美的人,如果有,返回“大家好,小美在这呢”,如果没有,返回“怎么找不到小美”

func hasClosuerMei(arr:[String], name:String, condition:(str:String, name:String) -> Bool) -> String{

    for name1 in arr{

        if condition(str: name1, name: name){

            return ("大家好,小美在这呢")

        }

    }

    return ("怎么找不到小美")

}

var findM = hasClosuerMei(["小d", "夺", "奇才"], "小美") { (str, name) -> Bool in

    if str == name{

        return true

    }else{

        return false

    }

}

print(findM)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值