在Swift中将列表从一个函数传递到另一个函数

发布于 2021-01-31 23:51:22

我不太明白为什么我不能将Int []从一个函数传递到另一个函数:

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

func average(numbers:Int...) -> Double {
    var sum = sumOf(numbers)

    return Double(sum) / Double(numbers.count)
}

这给了我以下错误:

Playground execution failed: error: <REPL>:138:19: error: could not find an overload for '__conversion' that accepts the supplied arguments

var sum = sumOf(numbers)
          ^~~~~~~~~~~~~~

谢谢你的帮助!

关注者
0
被浏览
90
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    中的numbers: Int...参数sumOf称为 可变参数
    。这意味着您可以传入该参数类型的可变数量,并且传入的所有内容都将转换为该类型的数组,以供您在函数中使用。

    因此,numbers内部的参数average是一个数组,而不是sumOf所期望的一组参数。

    您可能想要sumOf像这样重载以接受其中任何一个,因此您的平均函数可以调用适当的版本:

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看