变量参数 - 编译器错误无法将类型'[Int]'的值转换为预期的参数类型'Int'

Shi*_*nha 3 swift

新的快速.不确定为什么编译器会给出以下代码的错误:

func addNumbers(numbers: Int ...) -> Int {
    var total : Int = 0
    for number in numbers {
        total += number
    }
    return total
}

func multiplyNumbers(numbers: Int ...) -> Int {
    var total : Int = numbers [0]
    for (index,number) in numbers.enumerate()  {
        if index == 0 {
            continue
        }
        total *= number
    }
    return total
}

func mathOperation(mathFunction: (Int ...) -> Int, numbers: Int ...) -> Int {
     return mathFunction(numbers)
}
Run Code Online (Sandbox Code Playgroud)

错误:

错误:无法将类型'[Int]'的值转换为预期的参数类型'Int'返回mathFunction(数字)

Luk*_*itz 5

Swift varargs不太容易使用.我会将参数类型更改为Arrays.这是一个有效的解决方案:

func addNumbers(numbers: [Int]) -> Int {
    var total : Int = 0
    for number in numbers {
        total += number
    }
    return total
}

func multiplyNumbers(numbers: [Int]) -> Int {
    var total : Int = numbers [0]
    for (index,number) in numbers.enumerate()  {
        if index == 0 {
            continue
        }
        total *= number
    }
    return total
}

func mathOperation(mathFunction: [Int] -> Int, numbers: Int ...) -> Int {
     return mathFunction(numbers)
}

print(mathOperation(multiplyNumbers,numbers: 3,24))
Run Code Online (Sandbox Code Playgroud)

这将打印出来 72