无法删除的专题

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

2016-07-28  本文已影响46人  Jiubao

可变参数就是说,一个函数可以接受多个参数(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)

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

上一篇 下一篇

猜你喜欢

热点阅读