Swift学习之闭包

闭包的简单用法

    //: Playground - noun: a place where people can play

import UIKit


let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]

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

var reversed = names.sort(backWards)

reversed = names.sort({
    (s1:String,s2:String) -> Bool in
    return s1 > s2
})

reversed = names.sort({(s1:String,s2:String) ->Bool in return s1 > s2})
print(reversed) //["Ewa", "Daniella", "Chris", "Barry", "Alex"]

reversed = names.sort({s1,s2 in return s1 > s2})

reversed = names.sort({$0 > $1})

reversed = names.sort(<)

reversed = names.sort(){$0 < $1}

reversed = names.sort{$0 > $1}


func incrementNum (originValue value :Int) -> ()->Int {

    var runningTotal = 0
    func incrementer()->Int{
        runningTotal += value
        return runningTotal
    }
    return incrementer
}

var firstIncrement = incrementNum(originValue: 10)
firstIncrement() //10
firstIncrement() //20
firstIncrement() //30

var secondIncrement = incrementNum(originValue: 7)
secondIncrement() //7
secondIncrement() //14
secondIncrement() //21

var thirdIncrement = secondIncrement
thirdIncrement()


func someFuncWithNonescapeClosure(@noescape closure:()->Void){
    closure()
}

var completionHandler :[()->Void] = []
func someFunctWithScapeClosure(completion:()->Void){
    completionHandler.append(completion)
}


class someClass {
    var x = 10
    func doSomtiong() {
        //逃逸的不会立即执行
        someFunctWithScapeClosure{
            self.x -= 100
        }

        //非逃逸的立即执行
        someFuncWithNonescapeClosure { () -> Void in
            x += 100
        }

    }
}


var instance = someClass()
instance.doSomtiong()
print(instance.x) //110

completionHandler.first?()
print(instance.x) //10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值