Swift的学习(闭包2续)

前端之家收集整理的这篇文章主要介绍了Swift的学习(闭包2续)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

2、尾随闭包 (Trailing Closures) 语法不同而已,意思是一致的; 最后一个参数是函数,及闭包时,及尾随闭包;当你的函数里有一个参数 是函数,并且描述很长,这时你可以将其放在参数的最后;及尾随闭包

@H_404_3@//定义了一个函数 两个参数,后一个是函数 func someFunctionThatTakesAClosures(params1:String,params2:()->Void) { print(params1) params2() } //正常语法的使用 someFunctionThatTakesAClosures("hello",params2: { print("正常调用") }) //尾随闭包的使用 someFunctionThatTakesAClosures("你好") { print("尾随闭包调用") } @H_404_3@//如果只有闭包 一个参数,此函数 在使用时()可以省去 func testTrailing(params:()->Void) { params() } testTrailing { print("测试只有一个闭包参数的函数") } @H_404_3@//尾随闭包的练习 let digitName=[0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five"] let numberArray=[14,22,123] let resultC=numberArray.map { (resultA) -> String in var resultA=resultA print(resultA) return "你好\(resultA)" } print(resultC)//结果 ["你好14","你好22","你好123"] let resultD=digitName.map { (key,value) -> Void in print(key,value) } print(resultD)//结果 [(),(),()] //有些理解只可意会,不可言传;通过这个例子大家自己对他理解吧

3、捕获值 (Captureing Values) 可以理解为在内部函数能够访问传进去的值

@H_404_3@func makeIncrementer(params amcount:Int) -> ()->Int { var runningToal=0 func incrementer()->Int{ runningToal+=amcount return runningToal } return incrementer } var resultI=makeIncrementer(params: 10) print(resultI(),resultI(),resultI())//结果 10 20 30 //incrementer()单独拿出来是没有意义的

4闭包是引用类型

@H_404_3@let also=resultI print(also())//结果 40

猜你在找的Swift相关文章