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"]
总结以上是内存溢出为你收集整理的swift闭包的理解全部内容,希望文章能够帮你解决swift闭包的理解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)