Swift 闭包的认识

作者: 前进的苏辰 | 来源:发表于2016-08-05 20:14 被阅读0次

1.闭包定义

swift语言中可以使用一块独立的代码块替代函数的定义称独立的代码块为闭包

//闭包的格式:

func sumAAndB(a: Int,b: Int) ->Int {
    return a + b
}
print(sumAAndB(10, b: 20))

//<1>使用闭包实现两个数的和

var sum: (Int,Int)->Int = {(a: Int,b: Int)->Intin

return a + b

}

//[注意]闭包不调用和没有定义是一样的里面的语句块永远不会执行

2.闭包的简化(closure)

//<1>当执行语句只有一个表达式的时候 return关键字可以缺省

var closure1 = {(a: Int,b: Int) -> Intin

a > b ? a : b

}

print(closure1(10,20))

sortArr(&array123, method: {(a: Int,b: Int)->Boolin

a > b

})

print(array123)

//<2>当执行语句只有一个表达式而且表达式的结果类型可以推断出来那么return关键字和返回值类型可以同时缺省

var closure2 = {(a: Int,b: Int) in

a > b ? a : b

}

print(closure2(100,10000))

sortArr(&array123, method: {(a: Int,b: Int) in

a < b })

print(array123)

//<3>当参数的类型已知并且满足上面<2>的条件参数的名称可以缺省参数的类型可以缺省返回值类型可以缺省 return关键字可以缺省 in也缺省

var closure3: (Int,Int)->Int  = {$0 > $1 ? $0 : $1}

print(closure3(-100,0))

sortArr(&array123, method: {$0 > $1})

print(array123)

//<4>当参数个数为两个并且满足<3>的条件闭包中直接添加运算符号就可以

sortArr(&array123, method: <)

print(array123)

3.尾随闭包

//当函数最后一个形参是函数类型的变量时对函数类型的变量赋值时需要使用闭包那么闭包传值的书写位置可以放在所有参数列表之外不放在参数列表的最后位置 我们称这种写法为尾随闭包

//定义函数实现两个数的和和差

func SumAndSub(a: Int,b: Int,method: (Int,Int)->Int) {

print(method(a,b))

}

SumAndSub(10, b: 20, method: {(a: Int,b: Int)->Intin

return a + b

})

SumAndSub(100, b: 200, method: -)

SumAndSub(0, b: 10){$0 - $1}

相关文章

  • Swift-闭包

    Swift 闭包 函数 ()->() Swift 中的闭包和 Objective-C 中的 block 类似,闭包...

  • Swift闭包和函数

    函数在Swift中只是一种特殊的闭包,闭包在Swift语言中是一等公民,支持闭包嵌套和闭包传递。Swift中的闭包...

  • Swift 闭包的认识

    1.闭包定义 swift语言中可以使用一块独立的代码块替代函数的定义称独立的代码块为闭包 //闭包的格式: //<...

  • swift4 闭包

    swift 闭包 闭包:swift 中 函数是闭包的一种类似于oc的闭包闭包表达式(匿名函数) -- 能够捕获上下...

  • iOS&Swift&OC 闭包和Block的相互转化

    一、Swift的闭包 -> OC的block 二、OC的block -> Swift的闭包

  • Swift中的闭包

    在Swift中有两种闭包,逃逸闭包(@escaping)和非逃逸闭包(@nonescaping)。从Swift 3...

  • 100 Days of Swift - Day 06 - 闭包(

    100 Days of Swift - Day 06 - 闭包Closures 6.1 闭包 Swift函数也属于...

  • swift学习

    * 闭包 * 闭包作为属性 ```swift // 声明闭包类型 typealias callba...

  • iOS swift 逃逸闭包(@escaping)和非逃逸闭

    iOS swift 逃逸闭包(@escaping)和非逃逸闭包 (@noescaping) 逃逸闭包: 逃逸闭包...

  • Swift学习笔记(1)

    SWift学习笔记 闭包 闭包表达式 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 ...

网友评论

    本文标题: Swift 闭包的认识

    本文链接:https://www.haomeiwen.com/subject/jffksttx.html