Q:

Cannot convert value of type '[Int]' to expected argument type 'Int'

I new in swift and now learning this hard as i can. I wrote function that got arguments: numbers and function that work with this numbers:
func anotherSum(_ numbers : Int...) -> Int {
   return numbers.reduce(0, +)
}

func makeSomething(_ numbers : Int..., f : (Int...) -> Int) {
   print(workFunction(numbers))
}

makeSomething(1,2,3,4,5,6,7,8, f: anotherSum)

But compile gives out error cannot convert value of type '[Int]' to expected argument type 'Int'
. When i tried to change argument like 
workFunction : ([Int]) -> Int) and 
func anotherSum(_ numbers : [Int]) -> Int 
It work perfectly, but i still can't understand why realisation with Int... doesn't work and why compiler gives this error.

A:

As the Int... is considered as an [Int] in the function body so compiler will not allow to pass [Int] in place of Int.... You better calculate the sum as below,
func makeSomething(_ numbers : Int..., workFunction : (Int...) -> Int) {
    let sum = numbers.map({ workFunction($0)}).reduce(0, +)
    print(sum)
}

Or introduce another method that accepts array of Int and returns sum. Something as below,
func anotherSum(_ numbers : [Int]) -> Int {
    return numbers.reduce(0, +)
}

func makeSomething(_ numbers : Int..., workFunction : ([Int]) -> Int) {
    print(workFunction(numbers))
}

