// Playground - noun: a place where people can play


func getAverage(numbers: Int...) -> Double{
    var total = 0
    var average:Double = 0

    for number in numbers{
        total = total + number
    }

    average = total / numbers.count

    return average
}

getAverage(3, 6)

我在average = total / numbers.count上出错了

找不到接受提供的参数的"/"的重载

我试图通过以下方式解决问题:

average = Double(total/numbers.count)

但后来,getAverage设置为4,而不是4.5

推荐答案

Swift中没有此类隐式转换,因此您必须自己显式转换:

average = Double(total) / Double(numbers.count)

From The Swift Programming Language:"值永远不会隐式转换为其他类型."(部分:快速游览)

但是你现在使用的是Swift,而不是Objective-C,所以试着用一种更面向功能的方式来思考.你的函数可以这样写:

func getAverage(numbers: Int...) -> Double {
    let total = numbers.reduce(0, combine: {$0 + $1})
    return Double(total) / Double(numbers.count)
}

reduce将第一个参数作为累加器变量的初始值,然后将combine函数应用于累加器变量和数组中的每个元素.这里,我们传递一个匿名函数,它使用$0$1来表示它传递的第一个和第二个参数,并将它们相加.

更简洁地说,你可以这样写:numbers.reduce(0, +).

请注意,类型推断如何很好地发现totalInt.

Swift相关问答推荐

自定义完整屏幕封面动画

当我点击模拟器中的文本字段时,UIKit CLLocationButton崩溃

在visionOS 1.0中已弃用';base Color';:请改用`Color`属性

如何在每天午夜重置布尔值

无法创建MKAssociateRegion对象

为什么 Swift URL 的 init?(string: String,relativeTo: URL?) 仅添加协议?

如何使用模型在 SwiftUI 的列表中进行搜索

是否可以限制 ExpressibleByIntegerLiteral struct 的初始值?

我如何在 swift 中的 viewdidload 之前进行委托?

swiftui中服务端图片如何设计view并赋予rotationEffect?

如何在一个视图控制器中创建具有相同行为的多个集合视图?

并发执行代码中捕获的 var 的变异

如何确定扩展中的具体类型?

类型 '()' 不能符合 View (除非它肯定是 View,这次没有恶作剧)

如何在填充上添加 if else 语句? SwiftUI

将阻塞函数集成到 Swift 异步中

我们如何显示关于 UITextField 是 xCode Swift 的建议?

使用 DispatchTime.now() + float 延迟?

使用 Swift 以编程方式自定义 UITableViewCell

如何将多个枚举值作为函数参数传递