参考书籍:
[1]管蕾.张玲玲.朱元波.Swift开发实战[M]. 北京:人民邮电出版社.2014.10-1 ISBN 978-7-115-36827-0
[2]陈隽.刘媛媛.Swift入门很简单[M]. 北京:清华大学出版社.2015.01-01 ISBN 978-7-302-38880-7
一、无参形式的闭包表达式
语法形式:
{()->返回值类型 in 语句 } let/var 闭包表达式常量名称/闭包表达式变量名称/=无参形式的闭包表达式 //定义的语法形式: 闭包表达式常量名称/闭包表达式变量名称() //调用形式
例如:使用闭包表达式实现字符串"aaaa" 输出。
import Foundation var str={() in print("aaa") } str()
2、具有参数的闭包表达式
1) 一个参数语法形式
{ (参数名:数据类型)->返回值类型 in 语句 }
调用形式:闭包表达式常量名称/闭包表达式变量名称()
import Foundation var str={ (str:String) in print(str) } str("Hello Swift")
终端:
Hello Swift Program ended with exit code: 0
2)多个参数的语法形式
{ (参数名1:数据类型,...参数N:数据类型)->返回值类型 in 语句 }
例如:任意值求和
import Foundation var str={ (s1: Int,s2: Int)-> Int in var sum = s1 + s2 return sum } print(str(1,2))
将闭包表达式作为函数一部分的混合实例
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{ print("some bigger than 500 num is available") } else { print("there are havn't num than bigger than 500") } var v2 = copare( array,40,{(num: Int,value: Int) -> Bool in return num > value }) if v2==true { print("Thera are have bigger than 500 num in array") } else { print("There are hav't num than bigger than 40") }
终端:
调试失败,原因找不到
二、闭包表达式注意事项
1、指段类型