函数中的可变参数-Swift3.0

可变参数就是说,一个函数可以接受多个参数(0-n),但是对于一个函数,只能最多有一个可变参数,可变参数前面需要加_标记。
例子:

func sum(_ nums: Int...) -> Int {
    var sum = 0
    for num in nums {
        sum += num
    }
    return sum
}

let mySum = sum(1, 2, 3)

print(mySum)

运行结果为:

6

但是如果去掉_标记,将不能正确识别可变参数:

func sum(nums: Int...) -> Int {
    var sum = 0
    for num in nums {
        sum += num
    }
    return sum
}

let mySum = sum(1, 2, 3)

print(mySum)

运行结果:

dictFunny.swift:40:16: error: missing argument label 'nums:' in call
let mySum = sum(1, 2, 3)
               ^
                nums: 

如果需要加其他参数:

func sum(when: String, _ nums: Int..., needPrint: Bool) -> Int {
    var sum = 0
    for num in nums {
        sum += num
    }
    return sum
}

let mySum = sum(when: "now", 1, 2, 3, needPrint: true)

print(mySum)

其他参数没有_标记,所以可以正确识别,另外在调用的时候,一定要确保let mySum = sum(when: "now", 1, 2, 3, needPrint: true)传入了参数名,否则会报错:

dictFunny.swift:40:16: error: missing argument for parameter 'when' in call
let mySum = sum("now", 1, 2, 3, true)
               ^

其实,可变参数和数组作为参数没有大的区别,上面也可以实现为:

func sum(when: String, nums: [Int], needPrint: Bool) -> Int {
    var sum = 0
    for num in nums {
        sum += num
    }
    return sum
}

let mySum = sum(when: "now", nums: [1, 2, 3], needPrint: true)

print(mySum)

运行结果不变,个人认为可以看需要进行取舍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容