swift语言Trailing闭包swift语言入门很简单大学霸
swift语言Trailing闭包swift语言入门很简单大学霸
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.