swift语言Trailing闭包swift语言入门很简单大学霸

swift语言Trailing闭包swift语言入门很简单大学霸

Swift语言快速入门v3.0

Swift语言快速入门v3.0

7.9.3  Trailing闭包swift语言Trailing闭包swift语言入门很简单大学霸

如果开发者需要将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用Trailing闭包,它可以增强函数的可读性。Trailing闭包的一般形式如下swift语言Trailing闭包swift语言入门很简单大学霸:

func someFunctionThatTakesAClosure(closure: () -> ()) {

//函数主体部分

}

//以下不是使用trailing闭包进行的函数调用

someFunctionThatTakesAClosure({

//闭包主体部分

})

//以下是使用trailing闭包进行的函数调用

someFunctionThatTakesAClosure() {

         //闭包主体部分

}

注意:trailing闭包是一个写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用。示例7-31中代码也可以写为Trailing闭包,代码如下swift语言Trailing闭包swift语言入门很简单大学霸:

import Foundation

func copare(arr:[Int],value:Int,cb:(Num:Int,Value:Int)->Bool)->Bool{

for item in arr{

if(cb(Num: item,Value: value)){

return true

}

}

return false

}

var array = [20,80,100,50,20]

var v1=copare(array,500) {(num:Int,value:Int)->Bool in

    return num>value

}

if  v1==true {

println(“数组array中有比500大的元素”)

}else{

println(“数组array中没有比500大的元素”)

}

Trailing闭包一般使用在当闭包很长以至于不能在一行进行编写的代码中。如以下的例子就使用了Trailing闭包,实现将数字改为英文的功能。代码如下swift语言Trailing闭包swift语言入门很简单大学霸:

import Foundation

//创建字典

let digitNames = [

0: “Zero”, 1: “One”, 2: “Two”,   3: “Three”, 4: “Four”,5: “Five”, 6: “Six”, 7: “Seven”, 8: “Eight”, 9: “Nine”

]

//创建数组

let numbers = [521,52,1,13,14]

//以下是使用trailing闭包进行的函数调用,实现将数字转为英文

let strings = numbers.map {

    (var number) -> String in

    var output = “”

    while number > 0 {

        output = digitNames[number % 10]! + output

        number /= 10

    }

    return output

}

//遍历并输出

for index in strings{

println(index)

}

运行结果如下所示:

FiveTwoOne

FiveTwo

One

OneThree

OneFour

Program ended with exit code: 0

注意:在此代码中使用到了函数map(),它的功能是返回一个新的序列。其语法形式如下:

map(序列,闭包表达式)

其中,如果闭包表达式适用于序列中的所有元素,就会返回一个新的序列。但是在本示例中由于闭包中的内容比较多,就将它使用了Trailing闭包的形式swift语言Trailing闭包swift语言入门很简单大学霸。

Comments are closed.