首页 文章

Swift变量参数[重复]

提问于
浏览
1

这个问题在这里已有答案:

在“Swift编程语言”,函数和闭包中,有一个示例代码来计算总数,如下所示:

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

作为以下实验的一部分,我尝试了以下函数来计算平均值

func averageOf(numbers : Int...) -> Int {
        var argument:Array = numbers
        var average = sumOf(argument) / numbers.count
        return average
    }

但是,我收到以下错误

[Int]不可转换为Int

我也试过以下一行没有成功var average = sumOf(numbers)/ numbers.count

有什么想法在下面发生吗?当本书明确指出时,为什么sumOf参数将其视为Int而不是数组

“函数也可以使用可变数量的参数,将它们收集到一个数组中 . ”

2 回答

  • 1

    在我看来,如果你试图正确调用它,你的功能是可以的 .

    sumOf(25,23,43,23)
    

    但是如果你想调用数组使用这段代码:

    import UIKit
    
    var someInts = [Int]()
    someInts.append(8)
    someInts.append(6)
    someInts.append(6)
    someInts.append(3)
    someInts.append(5)
    
    func sumOf(numbers: [Int]) -> Int {
        var sum = 0
        for number in numbers {
            sum += number
        }
        return sum
    }
    
    
    sumOf(someInts)
    

    在函数中,你声明参数不是作为数组而是像未定义的整数量的主要问题

  • 0

    只需更改方法To的定义即可

    func sumOf(numbers: [Int]) -> Int
    

    代替

    func sumOf(numbers: Int...) -> Int
    

    因为您将数组作为参数传递给 func sumOf 函数,这不是预期的定义 .

相关问题