美文网首页iOS初中级开发
swift中函数可变参数的使用

swift中函数可变参数的使用

作者: TyroneTang | 来源:发表于2017-07-27 06:48 被阅读222次

    情景回顾(OC篇)
    在使用oc开发的时候就接触了函数可变参数的概念,用的最多的当然是在创建UIAlertView和ActionSheet时。自己也曾定义过这样的函数。然后取参的话使用的是 c函数中的这几个宏:

    void va_start(va_list arg_ptr, prev_param);
    void va_arg(va_list arg_ptr, type);
    void va_end(va_list arg_ptr);
    

    使用过程如下:

    -(int)add:(int)item, ...
    {
        va_list list; //定义一个指向个数可变的参数列表的指针
        va_start(list, item); //得到一个可变参数的地址,第一个参数传入列表指针,第二个参数传入函数接收的第一个参数
        int result = 0;
        NSLog(@"第一个参数:%d", item);
        result += item;
        int arg; //声明一个中间值,用来接收遍历可变参数列表时,取出的参数
        while ((arg = va_arg(list, int))) { //得到列表中的下一个参数,第一个参数传入列表指针,第二个参数为此函数可变参数的类型。
            //循环的结束条件是arg不存在,即为nil
            NSLog(@"当前参数:%d" , arg);
            result+=arg;
        }
        va_end(list); //置空列表指针
        return result;
    }
    @end
    

    在使用此类型的函数定义时需要熟悉va_start、va_arg和va_end等宏的使用。


    swift篇
    在swift里对于可变参数定义和使用变成了如下这样:

    func arithmeticMean(_ numbers: Double...) -> Double {
        var total: Double = 0
        for number in numbers {
            total += number
        }
        return total / Double(numbers.count)
    }
    

    在传入的参数类型后边加上...即声明了该参数是可变长度的,而我们在取参的时候只需要将其当成数组去处理,这似乎比oc省心了不少。

    相关文章

      网友评论

        本文标题:swift中函数可变参数的使用

        本文链接:https://www.haomeiwen.com/subject/ommakxtx.html