swift闭包的理解
2015-10-24 15:52
337 查看
1.闭包分三种:
1)全局函数,本身有名字,但是不capture变量
2)嵌套函数,有名字,可以capture变量,但是不可改变
3)闭包表达式,没有名字,可以根据上下文capture变量
2.嵌套函数
func function3(paras :
Int) ->(() ->Int){
var total =
0;
func add() ->Int{
total = total + paras;
print("totoal = " +
String(total));
return total;
}
return
add;
}
//闭包内对total 进行capture
let a =
self.function3(10);//获得函数a
var b = a();//第一次调用 total =10
b = a();//第二次调用20
b = a();//第三次调用30
print(b);
3.闭包表达式
定义一个数字到英文的对应map
let digitNames = [
0:
"Zero", 1:
"One", 2:
"Two", 3:
"Three", 4:
"Four",
5:
"Five", 6:
"Six", 7:
"Seven", 8:
"Eight", 9:
"Nine"
];
let nums = [123,134,23];
num不必指明类型,可以上下文判断类型,数组map函数的作于是对每一个元素执行闭包中的代码然后返回对于映射的值,最后这些值组成一个数组返回
let strings = nums.map
{ (var num) ->
String
in
var output =
"";
while num >
0{
output = digitNames[num%10]! + output;
num /=
10;
}
return output;
};
print(strings);
strings的打印结果:
["OneTwoThree", "OneThreeFour", "TwoThree"]
1)全局函数,本身有名字,但是不capture变量
2)嵌套函数,有名字,可以capture变量,但是不可改变
3)闭包表达式,没有名字,可以根据上下文capture变量
2.嵌套函数
func function3(paras :
Int) ->(() ->Int){
var total =
0;
func add() ->Int{
total = total + paras;
print("totoal = " +
String(total));
return total;
}
return
add;
}
//闭包内对total 进行capture
let a =
self.function3(10);//获得函数a
var b = a();//第一次调用 total =10
b = a();//第二次调用20
b = a();//第三次调用30
print(b);
3.闭包表达式
定义一个数字到英文的对应map
let digitNames = [
0:
"Zero", 1:
"One", 2:
"Two", 3:
"Three", 4:
"Four",
5:
"Five", 6:
"Six", 7:
"Seven", 8:
"Eight", 9:
"Nine"
];
let nums = [123,134,23];
num不必指明类型,可以上下文判断类型,数组map函数的作于是对每一个元素执行闭包中的代码然后返回对于映射的值,最后这些值组成一个数组返回
let strings = nums.map
{ (var num) ->
String
in
var output =
"";
while num >
0{
output = digitNames[num%10]! + output;
num /=
10;
}
return output;
};
print(strings);
strings的打印结果:
["OneTwoThree", "OneThreeFour", "TwoThree"]
相关文章推荐
- swift:创建九宫格
- iOS经典讲解之Swift结构体和类
- 使用OC swift 截取路径中的最后的文件名
- iOS Swift混编详解
- swift函数作为返回值
- 利用UIWebView打造一个炫酷的视频背景视图(OC & Swift)
- swift:创建滚动视图的图片轮播器
- iOS Swift最简单的Animation
- swift 之 函数
- 关于 Swift 中的 Array.contains 方法
- SwiftCafe 咖啡时光 - 了解 Swift 中的闭包
- iOS巅峰之Swift结构体和类, 枚举, 构造器, 继承, 协议, 扩展(完结篇)
- iOS巅峰之Swift 函数, 闭包详解(下)
- ios深度解析之Swift(枚举,继承,协议,扩展)
- ios深度解析之Swift(结构体和类,属性)
- ios深度解析之Swift(函数)
- swift:创建表格UITableView
- iOS经典讲解之Swift匿名函数(闭包)(二)
- Swift基础知识
- Swift高级开发语言--结构体,类,构造器,属性