Swift学习笔记-闭包

参考书籍:
[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、指段类型