swift闭包的理解

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"]



        

        




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值