今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅swift入门篇-函数
1:函数类型
例子
/* 1:func 是函数关键字 2:Say是函数名,表示函数的地址
3:Say函数 参数是整形 返回值为布尔类型
*/ func Say(num:Int)->Bool{ return num > 10 } var By:(Int)->Bool = Say 1:Say是函数名的地址,并且函数类型,参数为整形,返回值布尔类型 2:(Int)->Bool 表示 函数类型,参数为整形 ,返回值为布尔类型。 即:By是函数变量(参数为整形,返回值为布尔类型) 指向函数名(Say) */ var b = By(12) //by(12)直接调用函数 println(b) 运行结果 true
2:闭包格式
格式 : { (参数:类型) ->返回类型 in 执行方法 return 返回类型 } 说明: 1;闭包主要指向函数类型 2:闭包的参数必须和函数类型的参数和返回值一致
函数Getlist说明
参数:
1:第一个参数 整形集合变量
2:第二参数,函数类型变量 参数为整形返回值布尔类型
返回值
整形集合
*/
func GetList(arr:Int[],pre:(Int)->Bool) ->Int[]{
//定义一个空的可变整形集合
var tempArr = Int[]()
for temp in arr {
if pre(temp){
tempArr += temp;
}
}
return tempArr;
}
调用Getlist 说明
第一个参数 整形数组 [1,2,3,4]
第二个参数 闭包 来指向给 函数类型 。
{(s) in return s>2} 闭包类型说明,参数为整形,返回值为布尔类型
*/
let arr=GetList([1,2,128); line-height:1.5!important">3,128); line-height:1.5!important">4],{(s:Int) in return s>2})
println(arr)
运行结果
[4]
3:闭包简写方法
1;第一种简写 :省略 参数类型和括号
2:第二种简写 : 省略 参数类型和括号,return关键字
3:第三种简写 : 参数名称缩写 (用$0代表第一个参数,$1代表第二个参数)
第一种简写 :省略 参数类型和括号
var Arr = GetList([2})
第二种简写 : 省略 参数类型和括号,return关键字
Arr = GetList([in s>2})
第三种简写 : 参数名称缩写
Arr = GetList([0>2}) 其中$0表示第一个参数
println(Arr)
以上3种用法的运行结果为
[ 4:尾随闭包
官方定义:尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用
1: 函数 Fuction 的参数 函数类型
2: 参数为函数类型,函数类型,参数为空,返回值为空
*/
func Fuction(closure: () -> ()) {
println("无参数,无返回值的韩式类型")
}
-----------------第一种调用方法------------
/*
调用函数Fuction
1:参数为闭包
2:闭包的参数为空,返回值为空
*/
Fuction({
})
-----------------第二种调用方法------------
Fuction() {
}
以上2种调用方法的运行结果都是
无参数,无返回值的韩式类型